{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Probability and statistics\n",
    "\n",
    "\n",
    "In some form or another, machine learning is all about making predictions. \n",
    "We might want to predict the *probability* of a patient suffering a heart attack in the next year,\n",
    "given their clinical history.\n",
    "In anomaly detection, we might want to assess how *likely* a set of readings from an airplane's jet engine would be,\n",
    "were it operating normally. \n",
    "In reinforcement learning, we want an agent to act intelligently in an environment. \n",
    "This means we need to think about the probability of getting a high reward under each of the available action. \n",
    "And when we build recommender systems we also need to think about probability. \n",
    "For example, if we *hypothetically* worked for a large online bookseller,\n",
    "we might want to estimate the probability that a particular user would buy a particular book, if prompted. \n",
    "For this we need to use the language of probability and statistics. \n",
    "Entire courses, majors, theses, careers, and even departments, are devoted to probability.\n",
    "So our goal here isn't to teach the whole subject. \n",
    "Instead we hope to get you off the ground,\n",
    "to teach you just enough that you know everything necessary to start building your first machine learning models \n",
    "and to have enough of a flavor for the subject that you can begin to explore it on your own if you wish.\n",
    "\n",
    "\n",
    "We've talked a lot about proabbilities so far without articulating what precisely they are or giving a concrete example. Let's get more serious by considering the problem of distinguishing cats and dogs based on photographs. This might sound simpler but it's actually a formidable challenge. To start with, the difficulty of the problem may dependon the resolution of the image.\n",
    "\n",
    "| 20px | 40px | 80px | 160px | 320px |\n",
    "|:----:|:----:|:----:|:-----:|:-----:|\n",
    "|![](../img/whitecat20.jpg)|![](../img/whitecat40.jpg)|![](../img/whitecat80.jpg)|![](../img/whitecat160.jpg)|![](../img/whitecat320.jpg)|\n",
    "|![](../img/whitedog20.jpg)|![](../img/whitedog40.jpg)|![](../img/whitedog80.jpg)|![](../img/whitedog160.jpg)|![](../img/whitedog320.jpg)|\n",
    "\n",
    "While it's easy for humans to recognize cats and dogs 320 pixel resolution, \n",
    "it becomes challenging at 40 pixels \n",
    "and next to impossible at 20 pixels. \n",
    "In other words, our ability to tell cats and dogs apart at a large distance (and thus low resolution) \n",
    "might approach uninformed guessing. \n",
    "Probability gives us a formal way of reasoning about our level of certainty.\n",
    "If we are completely sure that the image depicts a cat, \n",
    "we say that the *probability* that the corresponding label $l$ is $\\mathrm{cat}$, \n",
    "denoted $P(l=\\mathrm{cat})$ equals 1.0.\n",
    "If we had no evidence to suggest that $l =\\mathrm{cat}$ or that $l = \\mathrm{dog}$,\n",
    "then we might say that the two possibilites were equally $likely$\n",
    "expressing this as $P(l=\\mathrm{cat}) = 0.5$.\n",
    "If we were were reasonably confident, but not sure that the image depicted a cat,\n",
    "we might assing a probability $.5  < P(l=\\mathrm{cat}) < 1.0$.\n",
    "\n",
    "Now consider a second case:\n",
    "given a some weather monitoring data,\n",
    "we want to predict the probability that it will rain in Taipei tomorrow.\n",
    "If it's summertime, the rain might come with probability $.5$\n",
    "In both cases, we have some value of interest.\n",
    "And in both cases we are uncertain about the outcome.\n",
    "But There's a key difference between the two cases. \n",
    "In this first case, the image is in fact either a dog or a cat, \n",
    "we just don't know which. \n",
    "In the second case, the outcome may actually be a random event,\n",
    "if you believe in such things (and most physicists do).\n",
    "So probability is a flexible language for reasoning about our level of certainty,\n",
    "and it can be applied effectively in a broad set of contexts."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Basic probability theory\n",
    "\n",
    "Say that we cast a die and want to know \n",
    "what the chance is of seeing a $1$ \n",
    "rather than another digit. \n",
    "If the die is fair, all six outcomes $\\mathcal{X} = \\{1, \\ldots, 6\\}$ \n",
    "are equally likely to occur, \n",
    "hence we would see a $1$ in $1$ out of $6$ cases. \n",
    "Formally we state that $1$ occurs with probability $\\frac{1}{6}$. \n",
    "\n",
    "For a real die that we receive from a factory,\n",
    "we might not know those proportions \n",
    "and we would need to check whether it is tainted. \n",
    "The only way to investigate the die is by casting it many times \n",
    "and recording the outcomes. \n",
    "For each cast of the die, \n",
    "we'll observe a values $\\{1, 2, \\ldots, 6\\}$. \n",
    "Given these outcomes, we want to investigate the probability of observing each outcome.\n",
    "\n",
    "One natural approach for each value is to take the individual count for that value\n",
    "and to divide it by the total number of tosses.\n",
    "This gives us an *estimate* of the probability of a given event. \n",
    "The law of large numbers tell us that as the number of tosses grows this estimate will draw closer and closer to the true underlying probability.\n",
    "Before going into the details of what's going here, let's try it out.\n",
    "\n",
    "To start, let's import the necessary packages:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import mxnet as mx\n",
    "from mxnet import nd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we'll want to be able to cast the die.\n",
    "In statistics we call this process of drawing examples from probability distributions *sampling*.\n",
    "The distribution which assigns probabilities to a number of discrete choices is called \n",
    "the *multimonial* distribution. \n",
    "We'll give a more formal definition of *distribution* later,\n",
    "but at a high level, think of it as just an assignment of probabilities to events.\n",
    "In MXNet, we can sample from the multinomial distribution via the aptly named `nd.sample_multinomial` function.\n",
    "The function can be called in many ways, but we'll focus on the simplest.\n",
    "To draw a single sample, we simply give pass in a vector of probabilities."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "[1]\n",
       "<NDArray 1 @cpu(0)>"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "probabilities = nd.ones(6) / 6\n",
    "nd.sample_multinomial(probabilities)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you run this line (`nd.sample_multinomial(probabilities)`) a bunch of times, \n",
    "you'll find that you get out random values each time. \n",
    "As with estimating the fairness of a die, \n",
    "we often want to generate many samples from the same distribution.\n",
    "It would be really slow to do this with a Python `for` loop,\n",
    "so `sample_multinomial` supports drawing multiple samples at once,\n",
    "returning an array of independent samples in any shape we might desire."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "[4 4 2 1 1 1 5 4 0 4]\n",
      "<NDArray 10 @cpu(0)>\n",
      "\n",
      "[[2 3 0 4 1 2 4 0 3 0]\n",
      " [3 3 4 0 0 0 5 5 3 5]\n",
      " [3 0 0 0 5 5 0 1 1 1]\n",
      " [5 4 0 0 2 1 4 5 3 3]\n",
      " [4 3 1 2 2 4 2 0 1 5]]\n",
      "<NDArray 5x10 @cpu(0)>\n"
     ]
    }
   ],
   "source": [
    "print(nd.sample_multinomial(probabilities, shape=(10)))\n",
    "print(nd.sample_multinomial(probabilities, shape=(5,10)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we know how to sample rolls of a die,\n",
    "we can simulate 1000 rolls."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "rolls = nd.sample_multinomial(probabilities, shape=(1000))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can then go through and count, after each of the 1000 rolls,\n",
    "how many times each number was rolled."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "counts = nd.zeros((6,1000))\n",
    "totals = nd.zeros(6)\n",
    "for i, roll in enumerate(rolls):\n",
    "    totals[int(roll.asscalar())] += 1\n",
    "    counts[:, i] = totals"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To start, we can inspect the final tally at the end of $1000$ rolls."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "[ 0.168       0.15800001  0.15099999  0.155       0.18799999  0.18000001]\n",
       "<NDArray 6 @cpu(0)>"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "totals / 1000"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, the lowest estimated probability for any of the numbers is about $.15$ \n",
    "and the highest estimated probability is $1.86$. \n",
    "Because we generated the data from a fair die,\n",
    "we know that each number actually has probability of $1/6$, roughly $.167$,\n",
    "so these estimates are pretty good. \n",
    "We can also visualize how these probabilities converge over time\n",
    "towards reasonable estimates.\n",
    "\n",
    "To start let's take a look at the `counts`\n",
    "array which has shape `(6, 1000)`.\n",
    "For each time step (out of 1000),\n",
    "counts, says how many times each of the numbers has shown up.\n",
    "So we can normalize each $j$-th column of the counts vector by the number of tosses\n",
    "to give the `current` estimated probabilities at that time.\n",
    "The counts object looks like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "[[   0.    0.    0. ...,  168.  168.  168.]\n",
       " [   0.    0.    0. ...,  157.  158.  158.]\n",
       " [   0.    0.    0. ...,  151.  151.  151.]\n",
       " [   0.    0.    0. ...,  155.  155.  155.]\n",
       " [   0.    0.    1. ...,  188.  188.  188.]\n",
       " [   1.    2.    2. ...,  179.  179.  180.]]\n",
       "<NDArray 6x1000 @cpu(0)>"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "counts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Normalizing by the number of tosses, we get:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "[ 0.  0.  0.  0.  0.  1.]\n",
      "<NDArray 6 @cpu(0)>\n",
      "\n",
      "[ 0.  0.  0.  0.  0.  1.]\n",
      "<NDArray 6 @cpu(0)>\n",
      "\n",
      "[ 0.17821783  0.15841584  0.13861386  0.12871288  0.15841584  0.23762377]\n",
      "<NDArray 6 @cpu(0)>\n"
     ]
    }
   ],
   "source": [
    "x = nd.arange(1000).reshape((1,1000)) + 1\n",
    "estimates = counts / x\n",
    "print(estimates[:,0])\n",
    "print(estimates[:,1])\n",
    "print(estimates[:,100])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, after the first toss of the die, we get the extreme estimate that one of the numbers will be rolled with probability $1.0$ and that the others have probability $0$. After $100$ rolls, things already look a bit more reasonable.\n",
    "We can visualize this convergence by using the plotting package `matplotlib`. \n",
    "If you don't have it installed, now would be a good time to [install it](https://matplotlib.org/).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc8b5990588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "plt.plot(estimates[0, :].asnumpy(), label=\"Estimated P(die=1)\")\n",
    "plt.plot(estimates[1, :].asnumpy(), label=\"Estimated P(die=2)\")\n",
    "plt.plot(estimates[2, :].asnumpy(), label=\"Estimated P(die=3)\")\n",
    "plt.plot(estimates[3, :].asnumpy(), label=\"Estimated P(die=4)\")\n",
    "plt.plot(estimates[4, :].asnumpy(), label=\"Estimated P(die=5)\")\n",
    "plt.plot(estimates[5, :].asnumpy(), label=\"Estimated P(die=6)\")\n",
    "plt.axhline(y=0.16666, color='black', linestyle='dashed')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Each solid curve corresponds to one of the six values of the die\n",
    "and gives our estimated probability that the die turns up that value \n",
    "as assessed after each of the 1000 turns. \n",
    "The dashed black line gives the true underlying probability.\n",
    "As we get more data, the solid curves converge towards the true answer."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- What we can see is that the red curves pretty well capture the behavior of the 10 random traces of averages. This is the case since we are averaging numbers and their aggregate behavior is like that of a number with a lot less uncertainty. Looking at the red curves, they are given by $f(x) = \\pm 1/\\sqrt{x}$. (The reader might cry foul by noting that we just added Gaussian random variables which, quite obviously, lead to yet another Gaussian random variable. That said, the curves for sums of other random variables, such as $\\{0, 1\\}$ valued objects look identical in the limit.) -->\n",
    "\n",
    "\n",
    "In our example of casting a die, we introduced the notion of a **random variable**. \n",
    "A random variable, which we denote here as $X$ can be pretty much any quantity is not determistic. \n",
    "Random variables could take one value among a set of possibilites. \n",
    "We denote sets with brackets, e.g., $\\{\\mathrm{cat}, \\mathrm{dog}, \\mathrm{rabbit}\\}$.\n",
    "The items contained in the set are called *elements*,\n",
    "and we can say that an element $x$ is *in* the set S, by writing $x \\in S$.\n",
    "The symbol $\\in$ is read as \"in\" and dennotes membership. \n",
    "For instance, we could truthfully say $\\mathrm{dog} \\in \\{\\mathrm{cat}, \\mathrm{dog}, \\mathrm{rabbit}\\}$.\n",
    "When dealing with the rolls of die, we are concrned with a variable $X \\in \\{1, 2, 4, 5, 6\\}$. \n",
    "\n",
    "Note that there is a subtle difference between discrete random variables, like the sides of a dice, \n",
    "and continuous ones, like the weight and the height of a person. \n",
    "There's little point in asking whether two people have exactly the same height. \n",
    "If we take precise enough measurements you'll find that no two people on the planet have the exact same height. \n",
    "In fact, if we take a fine enough measurement, \n",
    "you will not have the same height when you wake up and when you go to sleep.\n",
    "So there's no purpose in asking about the probability \n",
    "that some one is $2.00139278291028719210196740527486202$ meters tall. \n",
    "The probability is 0.\n",
    "It makes more sense in this case to ask whether someone's height falls into a given interval, \n",
    "say between 1.99 and 2.01 meters. \n",
    "In these cases we quantify the likelihood that we see a value as a density. \n",
    "The height of exactly 2.0 meters has no probability, but nonzero density. \n",
    "Between any two different heights we have nonzero probability.\n",
    "\n",
    "\n",
    "There are a few important axioms of proability that you'll want to remember:\n",
    "\n",
    "* For any event $z$, the probability is never negative, i.e. $\\Pr(Z=z) \\geq 0$.\n",
    "* For any two events $Z=z$ and $X=x$ the union is no more likely than the sum of the individual events, i.e. $\\Pr(Z=z \\cup X=x) \\leq \\Pr(Z=z) + \\Pr(X=x)$.\n",
    "* For any random variable, the probabilities of all the values it can take must sum to 1 $\\sum_{i=1}^n P(Z=z_i) = 1$.\n",
    "* For any two mutually exclusive events $Z=z$ and $X=x$, the probability that either happens is equal to the sum of their individual probabilities that $\\Pr(Z=z \\cup X=x) = \\Pr(Z=z) + \\Pr(X=z)$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dealing with multiple random variables\n",
    "\n",
    "Very often, we'll want consider more than one random variable at a time. \n",
    "For instnace, we may want to model the relationship between diseases and symptoms.\n",
    "Given a disease and symptom, say 'flu' and 'cough', \n",
    "either may or may not occur in a patient with some probability.\n",
    "While we hope that the probability of both would be close to zero,\n",
    "we may want to estimate these probabilities and their relationships to each other\n",
    "so that may we apply our inferences to effect better medical care.\n",
    "\n",
    "As a more complicated example, images contain millions of pixels, thus millions of random variables. \n",
    "And in many cases images will come with a label, identifying objects in the image.\n",
    "We can also think of the label as a random variable.\n",
    "We can even get crazy and think of all the metadata as random variables\n",
    "such as location, time, aperture, focal length, ISO, focus distance, camera type, etc.\n",
    "All of these are random variable that occur jointly. \n",
    "When we deal with multiple random variables, \n",
    "there are several quantities of interest.\n",
    "The first is called the joint distribution $\\Pr(A, B)$. \n",
    "Given any elements $a$ and $b$,\n",
    "the joint distribution lets us answer,\n",
    "what is the probability that $A=a$ and $B=b$ simulataneously?\n",
    "It might be clear that for any values $a$ and $b$, $\\Pr(A,B) \\leq \\Pr(A=a)$. \n",
    "\n",
    "This has to be the case, since for $A$ and $B$ to happen, \n",
    "$A$ has to happen *and* $B$ also has to happen (and vice versa). \n",
    "Thus $A,B$ cannot be more likely than $A$ or $B$ individually. \n",
    "This brings us to an interesting ratio: $0 \\leq \\frac{\\Pr(A,B)}{\\Pr(A)} \\leq 1$. \n",
    "We call this a **conditional probability** and denote it by $\\Pr(B|A)$, \n",
    "the probability that $B$ happens, provided that $A$ has happened. \n",
    "\n",
    "Using the definition of conditional probabilities, \n",
    "we can derive one of the most useful and celebrated equations in statistics - Bayes' theorem. \n",
    "It goes as follows: By construction, we have that $\\Pr(A, B) = \\Pr(B|A) \\Pr(A)$. \n",
    "By symmetry, this also holds for $\\Pr(A,B) = \\Pr(A|B) \\Pr(B)$. \n",
    "Solving for one of the conditional variables we get:\n",
    "$$\\Pr(A|B) = \\frac{\\Pr(B|A) \\Pr(A)}{\\Pr(B)}$$\n",
    "\n",
    "This is very useful if we want to infer one thing from another, \n",
    "say cause and effect but we only know the properties in the reverse direction. \n",
    "One important operation that we need to make this work is **marginalization**, i.e., \n",
    "the operation of determining $\\Pr(A)$ and $\\Pr(B)$ from $\\Pr(A,B)$.\n",
    "We can see that the probability of seeing $A$ amounts to accounting \n",
    "for all possible choices of $B$ and aggregating the joint probabilities over all of them, i.e. \n",
    "\n",
    "$$\\Pr(A) = \\sum_{B'} \\Pr(A,B') \\text{ and } \\Pr(B) = \\sum_{A'} \\Pr(A',B)$$\n",
    "\n",
    "A really useful property to check is for **dependence** and **independence**. \n",
    "Independence is when the occurrence of one event does not influence the occurrence of the other.\n",
    "In this case $\\Pr(B|A) = \\Pr(B)$. Statisticians typically use $A \\perp\\!\\!\\!\\perp B$ to express this. \n",
    "From Bayes Theorem it follows immediately that also $\\Pr(A|B) = \\Pr(A)$. \n",
    "In all other cases we call $A$ and $B$ dependent. \n",
    "For instance, two successive rolls of a dice are independent. \n",
    "On the other hand, the position of a light switch and the brightness in the room are not \n",
    "(they are not perfectly deterministic, though, \n",
    "since we could always have a broken lightbulb, power failure, or a broken switch). \n",
    "\n",
    "Let's put our skills to the test. \n",
    "Assume that a doctor administers an AIDS test to a patient. \n",
    "This test is fairly accurate and fails only with 1% probability \n",
    "if the patient is healthy by reporting him as diseased, \n",
    "and that it never fails to detect HIV if the patient actually has it. \n",
    "We use $D$ to indicate the diagnosis and $H$ to denote the HIV status.\n",
    "Written as a table the outcome $\\Pr(D|H)$ looks as follows:\n",
    "\n",
    "|             | Patient is HIV positive | Patient is HIV negative |\n",
    "|:------------|------------------------:|------------------------:|\n",
    "|Test positive| 1 | 0.01 |\n",
    "|Test negative| 0 | 0.99 |\n",
    "\n",
    "Note that the column sums are all one (but the row sums aren't), \n",
    "since the conditional probability needs to sum up to $1$, just like the probability. \n",
    "Let us work out the probability of the patient having AIDS if the test comes back positive. \n",
    "Obviously this is going to depend on how common the disease is, since it affects the number of false alarms.\n",
    "Assume that the population is quite healthy, e.g. $\\Pr(\\text{HIV positive}) = 0.0015$. \n",
    "To apply Bayes Theorem we need to determine \n",
    "\n",
    "$$\\Pr(\\text{Test positive}) = \\Pr(D=1|A=0) \\Pr(A=0) + \\Pr(D=1|A=1) \\Pr(A=1) = 0.01 \\cdot 0.9985 + 1 \\cdot 0.0015 = 0.011485$$\n",
    "\n",
    "Hence we get $\\Pr(A = 1|D = 1) = \\frac{\\Pr(D=1|A=1) \\Pr(A=1)}{\\Pr(D=1)} = \\frac{1 \\cdot 0.0015}{0.011485} = 0.131$, in other words, there's only a 13.1% chance that the patient actually has AIDS, despite using a test that is 99% accurate! As we can see, statistics can be quite counterintuitive. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conditional independence\n",
    "\n",
    "What should a patient do upon receiving such terrifying news? \n",
    "Likely, he/she would ask the physician to administer another test to get clarity. \n",
    "The second test has different characteristics (it isn't as good as the first one). \n",
    "\n",
    "|             | Patient is HIV positive | Patient is HIV negative |\n",
    "|:------------|------------------------:|------------------------:|\n",
    "|Test positive| 0.98 | 0.03 |\n",
    "|Test negative| 0.02 | 0.97 |\n",
    "\n",
    "Unfortunately, the second test comes back positive, too. \n",
    "Let us work out the requisite probabilities to invoke Bayes' Theorem. \n",
    "\n",
    "* $\\Pr(D_1 = 1 \\text{ and } D_2 = 1|A = 0) = 0.01 \\cdot 0.03 = 0.0001$\n",
    "* $\\Pr(D_1 = 1 \\text{ and } D_2 = 1|A = 1) = 1 \\cdot 0.98 = 0.98$\n",
    "* $\\Pr(D_1 = 1 \\text{ and } D_2 = 1) = 0.0001 \\cdot 0.9985 + 0.98 \\cdot 0.0015 = 0.00156985$\n",
    "* $\\Pr(A = 1|D_1 = 1 \\text{ and } D_2 = 1) = \\frac{0.98 \\cdot 0.0015}{0.00156985} = 0.936$\n",
    "\n",
    "That is, the second test allowed us to gain much higher confidence that not all is well. \n",
    "Despite the second test being considerably less accurate than the first one, \n",
    "it still improved our estimate quite a bit. \n",
    "*Why couldn't we just run the first test a second time?* \n",
    "After all, the first test was more accurate. \n",
    "The reason is that we needed a second test that confirmed *independently* of the first test that things were dire, indeed. In other words, we made the tacit assumption that $\\Pr(D_1, D_2|A) = \\Pr(D_1|A) \\Pr(D_2|A)$. Statisticians call such random variables **conditionally independent**. This is expressed as $D_1 \\perp\\!\\!\\!\\perp D_2 | A$. \n",
    "\n",
    "## Naive Bayes classification\n",
    "\n",
    "Conditional independence is useful when dealing with data, since it simplifies a lot of equations. \n",
    "A popular algorithm is the Naive Bayes Classifier. \n",
    "The key assumption in it is that the attributes are all independent of each other, given the labels. \n",
    "In other words, we have:\n",
    "\n",
    "$$p(x|y) = \\prod_i p(x_i|y)$$\n",
    "\n",
    "Using Bayes Theorem this leads to the classifier $p(y|x) = \\frac{\\prod_i p(x_i|y) p(y)}{p(x)}$. Unfortunately, this is still intractable, since we don't know $p(x)$. Fortunately, we don't need it, since we know that $\\sum_y p(y|x) = 1$, hence we can always recover the normalization from $p(y|x) \\propto \\prod_i p(x_i|y) p(y)$. After all that math, it's time for some code to show how to use a Naive Bayes classifier for distinguishing digits on the MNIST classification dataset. \n",
    "\n",
    "The problem is that we don't actually know $p(y)$ and $p(x_i|y)$. So we need to *estimate* it given some training data first. This is what is called *training* the model. In the case of 10 possible classes we simply compute $n_y$, i.e. the number of occurrences of class $y$ and then divide it by the total number of occurrences. E.g. if we have a total of 60,000 pictures of digits and digit 4 occurs 5800 times, we estimate its probability as $\\frac{5800}{60000}$. Likewise, to get an idea of $p(x_i|y)$ we count how many times pixel $i$ is set for digit $y$ and then divide it by the number of occurrences of digit $y$. This is the probability that that very pixel will be switched on."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "batch_size = 1\n",
    "# we go over one observation at a time (speed doesn't matter here)\n",
    "def transform(data, label):\n",
    "    return data.astype(np.float32)/255, label.astype(np.float32)\n",
    "mnist_train = mx.gluon.data.vision.MNIST(train=True, transform=transform)\n",
    "mnist_test = mx.gluon.data.vision.MNIST(train=False, transform=transform)\n",
    "\n",
    "# Initialize the count statistics for p(y) and p(x_i|y)\n",
    "# We initialize all numbers with a count of 1 to ensure that we don't get a\n",
    "# division by zero.  Statisticians call this Laplace smoothing.\n",
    "ycount = nd.ones(shape=(10))\n",
    "xcount = nd.ones(shape=(784, 10))\n",
    "\n",
    "# Aggregate count statistics of how frequently a pixel is on (or off) for\n",
    "# zeros and ones.\n",
    "for data, label in mnist_train:\n",
    "    x = data.reshape((784,))\n",
    "    y = int(label)\n",
    "    ycount[y] += 1\n",
    "    xcount[:, y] += x\n",
    "\n",
    "# normalize the probabilities p(x_i|y) (divide per pixel counts by total\n",
    "# count)\n",
    "for i in range(10):\n",
    "    xcount[:, i] = xcount[:, i]/ycount[i]\n",
    "\n",
    "# likewise, compute the probability p(y)\n",
    "py = ycount / nd.sum(ycount)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we computed per-pixel counts of occurrence for all pixels, it's time to see how our model behaves. Time to plot it. We show the estimated probabilities of observing a switched-on pixel. These are some mean looking digits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc8b572f5c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "[ 0.09871688  0.11236461  0.09930012  0.10218297  0.09736711  0.09035161\n",
      "  0.09863356  0.10441593  0.09751708  0.09915014]\n",
      "<NDArray 10 @cpu(0)>\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "fig, figarr = plt.subplots(1, 10, figsize=(15, 15))\n",
    "for i in range(10):\n",
    "    figarr[i].imshow(xcount[:, i].reshape((28, 28)).asnumpy(), cmap='hot')\n",
    "    figarr[i].axes.get_xaxis().set_visible(False)\n",
    "    figarr[i].axes.get_yaxis().set_visible(False)\n",
    "\n",
    "plt.show()\n",
    "print(py)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can compute the likelihoods of an image, given the model. This is statistican speak for $p(x|y)$, i.e. how likely it is to see a particular image under certain conditions (such as the label). Since this is computationally awkward (we might have to multiply many small numbers if many pixels have a small probability of occurring), we are better off computing its logarithm instead. That is, instead of $p(x|y) = \\prod_{i} p(x_i|y)$ we compute $\\log p(x|y) = \\sum_i \\log p(x_i|y)$. \n",
    "\n",
    "$$l_y := \\sum_i \\log p(x_i|y) = \\sum_i x_i \\log p(x_i = 1|y) + (1-x_i) \\log \\left(1-p(x_i=1|y)\\right)$$\n",
    "\n",
    "To avoid recomputing logarithms all the time, we precompute them for all pixels. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc8b5514e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "logxcount = nd.log(xcount)\n",
    "logxcountneg = nd.log(1-xcount)\n",
    "logpy = nd.log(py)\n",
    "\n",
    "fig, figarr = plt.subplots(2, 10, figsize=(15, 3))\n",
    "\n",
    "# show 10 images\n",
    "ctr = 0\n",
    "for data, label in mnist_test:\n",
    "    x = data.reshape((784,))\n",
    "    y = int(label)\n",
    "    \n",
    "    # we need to incorporate the prior probability p(y) since p(y|x) is\n",
    "    # proportional to p(x|y) p(y)\n",
    "    logpx = logpy.copy()\n",
    "    for i in range(10):\n",
    "        # compute the log probability for a digit\n",
    "        logpx[i] = nd.dot(logxcount[:, i], x) + nd.dot(logxcountneg[:, i], 1-x)\n",
    "    # normalize to prevent overflow or underflow by subtracting the largest\n",
    "    # value\n",
    "    logpx -= nd.max(logpx)\n",
    "    # and compute the softmax using logpx\n",
    "    px = nd.exp(logpx).asnumpy()\n",
    "    px /= np.sum(px)\n",
    "\n",
    "    # bar chart and image of digit\n",
    "    figarr[1, ctr].bar(range(10), px)\n",
    "    figarr[1, ctr].axes.get_yaxis().set_visible(False)\n",
    "    figarr[0, ctr].imshow(x.reshape((28, 28)).asnumpy(), cmap='hot')\n",
    "    figarr[0, ctr].axes.get_xaxis().set_visible(False)\n",
    "    figarr[0, ctr].axes.get_yaxis().set_visible(False)\n",
    "    ctr += 1\n",
    "    if ctr == 10:\n",
    "        break\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see, this classifier is both incompetent and overly confident of its incorrect estimates. That is, even if it is horribly wrong, it generates probabilities close to 1 or 0. Not a classifier we should use very much nowadays any longer. While Naive Bayes classifiers used to be popular in the 80s and 90s, e.g. for spam filtering, their heydays are over. The poor performance is due to the incorrect statistical assumptions that we made in our model: we assumed that each and every pixel are *independently* generated, depending only on the label. This is clearly not how humans write digits, and this wrong assumption led to the downfall of our overly naive (Bayes) classifier."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Sampling\n",
    "\n",
    "Random numbers are just one form of random variables, and since computers are particularly good with numbers, pretty much everything else in code ultimately gets converted to numbers anyway. One of the basic tools needed to generate random numbers is to sample from a distribution. Let's start with what happens when we use a random number generator. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.36555613019852196\n",
      "0.4723632667363914\n",
      "0.11762827222278505\n",
      "0.28997926538432717\n",
      "0.26585562005905383\n",
      "0.03264057741193649\n",
      "0.9300030175944551\n",
      "0.7837865124001734\n",
      "0.10177959804227388\n",
      "0.7111418651090528\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "for i in range(10):\n",
    "    print(random.random())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Uniform Distribution\n",
    "\n",
    "These are some pretty random numbers. As we can see, their range is between 0 and 1, and they are evenly distributed. That is, there is (actually, should be, since this is not a *real* random number generator) no interval in which numbers are more likely than in any other. In other words, the chances of any of these numbers to fall into the interval, say $[0.2,0.3)$ are as high as in the interval $[.593264, .693264)$. The way they are generated internally is to produce a random integer first, and then divide it by its maximum range. If we want to have integers directly, try the following instead. It generates random numbers between 0 and 100."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "23\n",
      "66\n",
      "75\n",
      "34\n",
      "65\n",
      "23\n",
      "74\n",
      "32\n",
      "72\n",
      "25\n"
     ]
    }
   ],
   "source": [
    "for i in range(10):\n",
    "    print(random.randint(1, 100))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What if we wanted to check that ``randint`` is actually really uniform. Intuitively the best strategy would be to run it, say 1 million times, count how many times it generates each one of the values and to ensure that the result is uniform. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAHVCAYAAAC5T7nZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X2UZXV95/v3Z2jURDOCUpcgDzYrcpNBEx9SC3GZmyGi\nCOjYzo0xkIw2Dt5OMphozLqxSe6SDI534c2MJoZE05Ee2ozhYVBjJ+BDX9RlvAlIQwgKaOgghu6g\ntDSiiUbT5nv/OLvIoTin65yqXafOPvV+rXVW7f3bv73395w69avfdz/8dqoKSZIkSVL3/Ku1DkCS\nJEmStDwmdJIkSZLUUSZ0kiRJktRRJnSSJEmS1FEmdJIkSZLUUSZ0kiRJktRRJnSSJEmS1FEmdJIk\nSZLUUSZ0kiRJktRRG9Y6gEGOOuqo2rhx41qHIalFN99881eram6t41gJ2yZp9tg2SZpWo7ZPU5nQ\nbdy4kd27d691GJJalORLax3DStk2SbPHtknStBq1ffKSS0mSJEnqKBM6SZIkSeooEzpJkiRJ6igT\nOkmSJEnqqCUTuiTHJ/lEkjuS3J7k9QPqJMk7k+xJcluS5/Qt25zkrua1ue03IEnDJDksyV8m+dMB\nyx6b5Kqm3boxycbJRyhpFg3rOyV5UpJdTZ9oV5Ijh6xv30nSyEY5Q3cQ+JWqOhk4FbggycmL6pwF\nnNS8tgDvgl7DBVwEPBc4BbhoWOMlSavg9cCdQ5adDzxYVU8D3gG8bWJRSZp1w/pOW4Hrq+ok4Ppm\n/hHsO0ka15IJXVXdV1W3NNPfoNc5OnZRtU3Ae6vnBuCIJMcALwZ2VdWBqnoQ2AWc2eo7kKQBkhwH\nvAR4z5Aqm4AdzfQ1wOlJMonYJM22Q/Sd+tudHcDLB6xu30nSWMa6h665JOnZwI2LFh0L3Ns3v7cp\nG1Y+aNtbkuxOsnv//v3jhLUubNx6LRu3XrvWYUhd8lvArwL/PGT5w+1TVR0EHgKevLiSbZM0/ab5\nf+SivtPRVXVfs+jLwNEDVhmp72TbpOWY5r8VLd/ICV2SJwDvB95QVV9vO5Cq2lZV81U1Pze35APR\nJWmoJC8F7q+qm1e6LdsmSct1qL5TVRVQy922bZOkBSMldEkOp9cgva+qPjCgyj7g+L7545qyYeWS\ntJqeD7wsyT3AlcALkvyPRXUebp+SbACeCDwwySAlza4hfaevNLek0Py8f8Cq9p0kjWWUUS4DXAbc\nWVVvH1JtJ/DqZrTLU4GHmksKPgqckeTI5obeM5oySVo1VXVhVR1XVRuBc4CPV9V/WFRtJ7Awetwr\nmjrLPlouSQsO0Xfqb3c2Ax8asLp9J0lj2TBCnecDrwI+m+TWpuzXgBMAqurdwHXA2cAe4JvAa5pl\nB5K8BbipWe/iqjrQXviSNLokFwO7q2onvc7WHybZAxygl/hJUhuG9Z0uAa5Ocj7wJeCVAEnmgZ+v\nqtfad5I0riUTuqr6NHDIkd+ao9oXDFm2Hdi+rOgkaYWq6pPAJ5vpN/eV/yPwU2sTlaRZtkTf6fQB\n9XcDr+2bt+8kaWRjjXIpSZIkSZoeJnSSJEmS1FEmdJIkSZLUUSZ0kiRJktRRJnSSJEmS1FEmdJIk\nSZLUUSZ0kiRJktRRJnSSJEmS1FEmdJIkSZLUUSZ0kiRJktRRJnSSJEmS1FEmdJIkSZLUUSZ0kiRJ\nktRRJnSSJEmS1FEmdJIkSZLUUUsmdEm2J7k/yeeGLP8/k9zavD6X5LtJntQsuyfJZ5tlu9sOXpIG\nSfK4JJ9J8ldJbk/ynwfUOS/J/r7267VrEauk2TOo75Tkqr725p4ktw5Z176TpLFsGKHO5cClwHsH\nLayq3wR+EyDJvwN+uaoO9FX5iar66grjlKRxfBt4QVX9fZLDgU8n+XBV3bCo3lVV9bo1iE/SbLuc\nRX2nqvrphekk/w146BDr23eSNLIlz9BV1aeAA0vVa5wLXLGiiCRpharn75vZw5tXrWFIktaRQ/Wd\nkgR4JfaXJLWktXvoknwvcCbw/r7iAj6W5OYkW5ZYf0uS3Ul279+/v62wJK1TSQ5rLmm6H9hVVTcO\nqPaTSW5Lck2S44dsx7ZJUpv+N+ArVXXXkOUj9Z1smyQtaHNQlH8H/H+LLrf8sap6DnAWcEGSHx+2\nclVtq6r5qpqfm5trMSxJ61FVfbeqngUcB5yS5BmLqvwJsLGqfgTYBewYsh3bJkltWupqppH6TrZN\nkha0mdCdw6IGqqr2NT/vBz4InNLi/iRpSVX1NeAT9K4g6C9/oKq+3cy+B/jRSccmaX1JsgH434Gr\nhtWx7yRpXK0kdEmeCPxb4EN9ZY9P8n0L08AZwMCRMiWpTUnmkhzRTH8P8CLg84vqHNM3+zLgzslF\nKGmdeiHw+araO2ihfSdJy7HkKJdJrgBOA45Kshe4iN4AA1TVu5tq/x74WFX9Q9+qRwMf7N37ywbg\nj6rqI+2FLklDHQPsSHIYvQNXV1fVnya5GNhdVTuBX0ryMuAgvcELzluzaCXNlEF9p6q6jAFXMyV5\nCvCeqjob+06SlmHJhK6qzh2hzuX0hujtL7sbeOZyA5Ok5aqq24BnDyh/c9/0hcCFk4xL0vowrO9U\nVecNKPs74Oxm2r7TOrBx67UA3HPJS9Y4kp5pi0fja/MeOkmSJEnSBJnQSZIkSVJHmdBJkiRJUkeZ\n0EmSJElSR5nQSZIkSVJHmdBJkiRJUkeZ0EmSJElSR5nQSZIkSVJHmdBJkiRJWpaFB5NPYj+T2lfX\nmNBJkiRJUkeZ0EmSJElSR5nQSZIkSVJHmdBJkiRJUkeZ0EmSJElSRy2Z0CXZnuT+JJ8bsvy0JA8l\nubV5vblv2ZlJvpBkT5KtbQYuScMkeVySzyT5qyS3J/nPA+o8NslVTft0Y5KNk49U0iwa1HdK8htJ\n9vX1l84esq59J0ljGeUM3eXAmUvU+bOqelbzuhggyWHA7wJnAScD5yY5eSXBStKIvg28oKqeCTwL\nODPJqYvqnA88WFVPA94BvG3CMUqaXZczuO/0jr7+0nWLF9p3krQcSyZ0VfUp4MAytn0KsKeq7q6q\n7wBXApuWsR1JGkv1/H0ze3jzqkXVNgE7mulrgNOTZEIhSpph9p0kTVJb99A9r7m06cNJnt6UHQvc\n21dnb1M2UJItSXYn2b1///6WwpK0XiU5LMmtwP3Arqq6cVGVh9uoqjoIPAQ8ecB2bJs6wAfODtbW\nZ+Jn25rXJbmtuSTzyAHLR+472TatPr/36oo2ErpbgKc2lzb9DvDHy9lIVW2rqvmqmp+bm2shLEnr\nWVV9t6qeBRwHnJLkGcvcjm2TpDa8C/gBepeB3wf8t5VszLZJ0oIVJ3RV9fWFS5ua68EPT3IUsA84\nvq/qcU2ZJE1MVX0N+ASPvp/l4TYqyQbgicADk41O0npRVV9pDjT9M/AH9C6vXMy+k6SxrTihS/L9\nC/edJDml2eYDwE3ASUlOTPIY4Bxg50r3J0lLSTKX5Ihm+nuAFwGfX1RtJ7C5mX4F8PGqWnyfnSS1\nIskxfbP/Hhg0erh9J0lj27BUhSRXAKcBRyXZC1xEb4ABqurd9DpCv5DkIPAt4JymU3QwyeuAjwKH\nAdur6vZVeReS9EjHADuaEeP+FXB1Vf1pkouB3VW1E7gM+MMke+gNXnDO2oUraZYM6TudluRZ9AZo\nugf4uabuU4D3VNXZVWXfSdLYlkzoqurcJZZfClw6ZNl1wKOG5ZWk1VRVtwHPHlD+5r7pfwR+apJx\nSVofhvSdLhtS9++As/vm7TtJGktbo1xKkiRJkibMhE6SJEmSOsqETpIkSZI6yoROkiRJkjrKhE6S\nJEnSmtq49do13fda7n+lTOgkSZIkqaNM6CRJkiSpo0zoJEmSJKmjTOgkSZIkqaNM6CRJkiSpo0zo\nJEmSJKmjTOgkSZIkqaNM6CRJkiSpo0zoJEmS1qG2Hqa8eDuDtjvtD26e9vj6dSnWpaz0vUzisxi2\n/f59r/Xvw4ROkiRJkjpqyYQuyfYk9yf53JDlP5vktiSfTfLnSZ7Zt+yepvzWJLvbDFyShklyfJJP\nJLkjye1JXj+gzmlJHmrap1uTvHktYpU0ewb1nZL8ZpLPN32mDyY5Ysi69p0kjWWUM3SXA2ceYvkX\ngX9bVT8MvAXYtmj5T1TVs6pqfnkhStLYDgK/UlUnA6cCFyQ5eUC9P2vap2dV1cWTDVHSDLucR/ed\ndgHPqKofAf4auPAQ69t3kjSyJRO6qvoUcOAQy/+8qh5sZm8AjmspNklalqq6r6puaaa/AdwJHLu2\nUUlaLwb1narqY1V1sJm1vySpNW3fQ3c+8OG++QI+luTmJFsOtWKSLUl2J9m9f//+lsOStF4l2Qg8\nG7hxwOLnJfmrJB9O8vQh69s2SWrbf+SR/aV+I/WdbJskLWgtoUvyE/QSujf1Ff9YVT0HOIveJU8/\nPmz9qtpWVfNVNT83N9dWWJLWsSRPAN4PvKGqvr5o8S3AU6vqmcDvAH88aBu2TZLalOTX6V0W/r4h\nVUbqO9k2SVrQSkKX5EeA9wCbquqBhfKq2tf8vB/4IHBKG/uTpKUkOZxeMve+qvrA4uVV9fWq+vtm\n+jrg8CRHTThMSetIkvOAlwI/W1U1qI59J0njWnFCl+QE4APAq6rqr/vKH5/k+xamgTOAgSNlSlKb\nkgS4DLizqt4+pM73N/VIcgq99vCBQXUlaaWSnAn8KvCyqvrmkDr2nSSNbcNSFZJcAZwGHJVkL3AR\ncDhAVb0beDPwZOD3mr7RwWZUpqOBDzZlG4A/qqqPrMJ7kKTFng+8Cvhsklubsl8DToCH265XAL+Q\n5CDwLeCcYUfMJWkcQ/pOFwKPBXY1faMbqurnkzwFeE9VnY19J0nLsGRCV1XnLrH8tcBrB5TfDTzz\n0WtI0uqqqk8DWaLOpcClk4lI0noypO902ZC6fwec3Ux3uu+0ceu1q7rdey55ybLqjLL+cuPYuPXa\nZe9znLgm8f4mabW+K23p2mfa9iiXkiRJkqQJMaGTJEmSpI4yoZMkSZKkjjKhkyRJkqSOMqGTJEmS\npI4yoZMkSZKkjjKhkyRJkqSOMqGTJEmSpI5a8sHikiRJml2jPLR6wbQ8aLmtB1OPsp226qyFtXhA\n9jjfp9Xc57A4+suHPRi+rThWc1/9PEMnSZIkSR1lQidJkiRJHWVCJ0mSJEkdZUInSZIkSR1lQidJ\nkiRJHTVSQpdke5L7k3xuyPIkeWeSPUluS/KcvmWbk9zVvDa3FbgkDZPk+CSfSHJHktuTvH5AnaHt\nliStxKB+U5InJdnV9Id2JTlyyLr2mySNZdQzdJcDZx5i+VnASc1rC/Au6DVewEXAc4FTgIuGNWCS\n1KKDwK9U1cnAqcAFSU5eVGdguyVJLbicR/ebtgLXV9VJwPXN/CPYb5K0HCMldFX1KeDAIapsAt5b\nPTcARyQ5BngxsKuqDlTVg8AuDp0YStKKVdV9VXVLM/0N4E7g2EXVhrVbkrQiQ/pNm4AdzfQO4OUD\nVrXfJGlsbd1Ddyxwb9/83qZsWPmjJNmSZHeS3fv37192IBu3XjuVD3dcjbiWs72FOAbFs5IYp+Vz\nn5Y4ND2SbASeDdy4aNFI7dNK26b+7+RyHk47znd6ud//1f7bH/QZLF5v2trI5e6rrc9yFtqxYf9n\nVrqdDn9OR1fVfc30l4GjB9SZeL9pJTr2+Y9kVvoRk/5f0AWz/P6mZlCUqtpWVfNVNT83N7fW4Uia\nAUmeALwfeENVfX0527BtktS2qiqgVrgN2yZJQHsJ3T7g+L7545qyYeWStKqSHE4vmXtfVX1gQBXb\nJ0mT9JWFy7qbn/cPqGO7JGlsbSV0O4FXN6PGnQo81FxW8FHgjCRHNjf1ntGUSdKqSRLgMuDOqnr7\nkGrD2i1JWg07gYVRKzcDHxpQx36TpLFtGKVSkiuA04CjkuylNwLT4QBV9W7gOuBsYA/wTeA1zbID\nSd4C3NRs6uKqOtTgKpLUhucDrwI+m+TWpuzXgBPg0O2WJK3UkH7TJcDVSc4HvgS8sqk7D/x8Vb3W\nfpOk5Rgpoauqc5dYXsAFQ5ZtB7aPH5okLU9VfRrIEnWGtluStBKH6DedPqDubuC1ffP2mySNZWoG\nRZEkSZIkjceETpIkSZI6yoROkiRJkjrKhE6SJEmSOsqETpIkSY+wceu1q779pfYxSp2297nWVhLj\nuOuu5LMY9/e32vtaTt1JxDMpJnSSJEmS1FEmdJIkSZLUUSZ0kiRJktRRJnSSJEmS1FEmdJIkSZLU\nUSZ0kiRJktRRJnSSJEmS1FEmdJIkSZLUURvWOgBJkiStD4sfyLwwf88lLxlaZ9oMinkttjeJh4hv\n3Hptp343K9XV9+cZOkmSJEnqqJESuiRnJvlCkj1Jtg5Y/o4ktzavv07ytb5l3+1btrPN4CVpkCTb\nk9yf5HNDlp+W5KG+tunNk45R0vqT5Af72p1bk3w9yRsW1bF9kjSWJS+5THIY8LvAi4C9wE1JdlbV\nHQt1quqX++r/IvDsvk18q6qe1V7IkrSky4FLgfceos6fVdVLJxOOJEFVfQF4Fjzcv9oHfHBAVdsn\nSSMb5QzdKcCeqrq7qr4DXAlsOkT9c4Er2ghOkpajqj4FHFjrOCTpEE4H/qaqvrTWgUjqtlESumOB\ne/vm9zZlj5LkqcCJwMf7ih+XZHeSG5K8fNhOkmxp6u3ev3//CGFJ0oo8L8lfJflwkqcPq2TbJGmV\nnMPwA+BLtk+2TZIWtD0oyjnANVX13b6yp1bVPPAzwG8l+YFBK1bVtqqar6r5ubm5lsOSpEe4hV7b\n9Ezgd4A/HlbRtklS25I8BngZ8D8HLB6pfbJtkrRglIRuH3B83/xxTdkgjzraVFX7mp93A5/kkffX\nSdLEVdXXq+rvm+nrgMOTHLXGYUlaP84CbqmqryxeYPskaVyjJHQ3ASclObE5onQO8KjRKpP8EHAk\n8Bd9ZUcmeWwzfRTwfOCOxetK0iQl+f4kaaZPodcWPrC2UUlaR4aON2D7JGlcS45yWVUHk7wO+Chw\nGLC9qm5PcjGwu6oWkrtzgCurqvpW/zfA7yf5Z3oN0iX9o2NK0mpIcgVwGnBUkr3ARcDhAFX1buAV\nwC8kOQh8CzhnUdslSasiyePpjRz+c31lPw+2T5KWZ8mEDh4+5X/dorI3L5r/jQHr/TnwwyuIT5LG\nVlXnLrH8UnqPNZCkiaqqfwCevKjs3X3Ta9Y+bdx6LQD3XPKStdj9w/ufxPY2br12Yu9zYV/jvL+1\n/l0sR1u/vy6+98Xa/i4vpe1BUSRJkiRJE2JCJ0mSJEkdZUInSZIkSR1lQidJkiRJHWVCJ0mSJEkd\nZUInSZIkSR1lQidJkiRJHWVCJ0mSJEkdNdKDxSVJkqQumORDw1fbpB9Q3b9PP8Pu8AydJEmSJHWU\nCZ0kSZIkdZQJnSRJkiR1lAmdJEmSJHWUCZ0kSZIkddRICV2SM5N8IcmeJFsHLD8vyf4ktzav1/Yt\n25zkrua1uc3gJWmQJNuT3J/kc0OWJ8k7mzbttiTPmXSMktanJPck+WzTX9o9YLntk6SxLPnYgiSH\nAb8LvAjYC9yUZGdV3bGo6lVV9bpF6z4JuAiYBwq4uVn3wVail6TBLgcuBd47ZPlZwEnN67nAu5qf\nkjQJP1FVXx2yzPZJ0lhGOUN3CrCnqu6uqu8AVwKbRtz+i4FdVXWgSeJ2AWcuL1RJGk1VfQo4cIgq\nm4D3Vs8NwBFJjplMdJJ0SLZPksYySkJ3LHBv3/zepmyxn2wuDbgmyfFjritJk2TbJGmtFPCxJDcn\n2TJgue2TpLEsecnliP4EuKKqvp3k54AdwAvG2UDTqG0BOOGEE1oKS5JWZrlt08at145d955LXjJ0\n/f46G7de+4i6yzVsO4P2tTieQ613qDpLrTMorkHbHRbXKPtYvO2lPoNxtjds/cWf6VLrjxpH//bG\n+bxX+vsb9p1d7u9k0D6H/Q2Mst02/j5W0Y9V1b4k/wuwK8nnm6sKxmK/SZM0zv+0Sexz2uJZa6Oc\nodsHHN83f1xT9rCqeqCqvt3Mvgf40VHX7dvGtqqar6r5ubm5UWKXpOWybZK0JqpqX/PzfuCD9G5t\n6TdS+2TbJGnBKAndTcBJSU5M8hjgHGBnf4VF13a/DLizmf4ocEaSI5McCZzRlEnSWtoJvLoZTe5U\n4KGqum+tg5I025I8Psn3LUzT6xctHo3X9knSWJa85LKqDiZ5Hb1E7DBge1XdnuRiYHdV7QR+KcnL\ngIP0BiI4r1n3QJK30EsKAS6uqkMNVCBJK5bkCuA04Kgke+mNtns4QFW9G7gOOBvYA3wTeM3aRCpp\nnTka+GAS6PXB/qiqPpLk58H2SdLyjHQPXVVdR6+B6S97c9/0hcCFQ9bdDmxfQYySNJaqOneJ5QVc\nMKFwJAmAqrobeOaA8nf3Tds+SRrLSA8WlyRJkiRNHxM6SZIkSeooEzpJkiRJ6igTOkmSJEnqKBM6\nSZIkjWTj1mvX9AHL0/xwZ2mtmNBJkiRJUkeZ0EmSJElSR5nQSZIkSVJHmdBJkiRJUkeZ0EmSJElS\nR5nQSZIkSVJHmdBJkiRJUkeZ0EmSJElSR5nQSZIkrSOTejj3Wj+EXFovTOgkSZIkqaNGSuiSnJnk\nC0n2JNk6YPkbk9yR5LYk1yd5at+y7ya5tXntbDN4SRpmhHbrvCT7+9qn165FnJLWjyTHJ/lE02e6\nPcnrB9Q5LclDfW3Tm9ciVkndsWGpCkkOA34XeBGwF7gpyc6quqOv2l8C81X1zSS/APw/wE83y75V\nVc9qOW5JGmrEdgvgqqp63cQDlLReHQR+papuSfJ9wM1Jdg1om/6sql66BvFJ6qBRztCdAuypqrur\n6jvAlcCm/gpV9Ymq+mYzewNwXLthStJYlmy3JGnSquq+qrqlmf4GcCdw7NpGJanrRknojgXu7Zvf\ny6Ebn/OBD/fNPy7J7iQ3JHn5sJWSbGnq7d6/f/8IYUnSUKO2Wz/ZXCp+TZLjB23ItknSakiyEXg2\ncOOAxc9L8ldJPpzk6UPWt22SBLQ8KEqS/wDMA7/ZV/zUqpoHfgb4rSQ/MGjdqtpWVfNVNT83N9dm\nWJI0yJ8AG6vqR4BdwI5BlWybJLUtyROA9wNvqKqvL1p8C72+0zOB3wH+eNA2bJskLRglodsH9B+5\nPq4pe4QkLwR+HXhZVX17obyq9jU/7wY+Se9olCStpiXbrap6oK+teg/woxOKTdI6luRwesnc+6rq\nA4uXV9XXq+rvm+nrgMOTHDXhMCV1yCgJ3U3ASUlOTPIY4BzgEaNVJnk28Pv0krn7+8qPTPLYZvoo\n4PnA4ht/Jalto7Rbx/TNvozevSyStGqSBLgMuLOq3j6kzvc39UhyCr2+2gOTi1JS1yw5ymVVHUzy\nOuCjwGHA9qq6PcnFwO6q2knvEssnAP+zaYP+tqpeBvwb4PeT/DO9BumSASM5SVKrRmy3finJy+iN\nOncAOG/NApa0XjwfeBXw2SS3NmW/BpwAUFXvBl4B/EKSg8C3gHOqqtYiWEndsGRCBw+f8r9uUdmb\n+6ZfOGS9Pwd+eCUBStJyjNBuXQhcOOm4JK1fVfVpIEvUuRS4dDIRSZoFrQ6KIkmSJEmaHBM6SZIk\nSeooEzpJkiRJ6igTOkmSJEnqKBM6SZIkSeooEzpJkiRJ6igTOkmSJEnqKBM6SZIkSeooEzpJkiRJ\n6igTOkmSJEnqKBM6SZIkSeooEzpJkiRJ6igTOkmSJEnqKBM6SZIkSeqokRK6JGcm+UKSPUm2Dlj+\n2CRXNctvTLKxb9mFTfkXkry4vdAlabiVtFuStFpsmyS1bcmELslhwO8CZwEnA+cmOXlRtfOBB6vq\nacA7gLc1654MnAM8HTgT+L1me5K0albSbknSarFtkrQaRjlDdwqwp6rurqrvAFcCmxbV2QTsaKav\nAU5Pkqb8yqr6dlV9EdjTbE+SVtNK2i1JWi22TZJaN0pCdyxwb9/83qZsYJ2qOgg8BDx5xHUlqW0r\nabckabXYNklqXarq0BWSVwBnVtVrm/lXAc+tqtf11flcU2dvM/83wHOB3wBuqKr/0ZRfBny4qq4Z\nsJ8twJZm9geBLywR+1HAV5d6g1PGmCfDmCdj3JifWlVzqxVMv5W0W1X11UXbGrdtgvXx+5wGXYu5\na/HC+ojZtmm6GfNkGPPqW068I7VPG0bY0D7g+L7545qyQXX2JtkAPBF4YMR1AaiqbcC2EeIBIMnu\nqpoftf40MObJMObJmPKYV9JuPcK4bRNM/WczkDGvvq7FC8a8CmybxmTMk2HMq2814x3lksubgJOS\nnJjkMfQGOdm5qM5OYHMz/Qrg49U79bcTOKcZselE4CTgM+2ELklDraTdkqTVYtskqXVLnqGrqoNJ\nXgd8FDgM2F5Vtye5GNhdVTuBy4A/TLIHOECvgaKpdzVwB3AQuKCqvrtK70WSgJW1W5K0WmybJK2G\nUS65pKquA65bVPbmvul/BH5qyLpvBd66ghiHGesygylhzJNhzJMx1TGvpN1qwVR/NkMY8+rrWrxg\nzK2zbRqbMU+GMa++VYt3yUFRJEmSJEnTaZR76CRJkiRJU8iETpIkSZI6yoROkiRJkjrKhE6SJEmS\nOsqETpIkSZI6yoROkiRJkjrKhE6SJEmSOsqETpIkSZI6yoROkiRJkjrKhE6SJEmSOsqETpIkSZI6\nyoROkiRJkjrKhE6SJEmSOsqETpIkSZI6yoROkiRJkjrKhE6SJEmSOsqETpIkSZI6yoROkiRJkjrK\nhE6SJEmSOsqETpIkSZI6yoROkiRJkjrKhE6SJEmSOsqETpIkSZI6yoROkiRJkjrKhE6SJEmSOsqE\nTpIkSZI6yoROkiRJkjrKhE6SJEmSOsqETpIkSZI6yoROkiRJkjrKhE6SJEmSOsqETpIkSZI6yoRO\nkiRJkjpqw1oHMMhRRx1VGzduXOswJLXo5ptv/mpVza11HCth2yTNHtsmSdNq1PZpKhO6jRs3snv3\n7rUOQ1KLknxprWNYKdsmafbYNkmaVqO2T15yKUmSJEkdZUInSZIkSR1lQidJkiRJHWVCJ0mSJEkd\nZUInSZKPGihJAAAds0lEQVQkSR1lQidJkiRJHWVCJ0mSJEkdZUInSZIkSR1lQqeZtHHrtWzceu3E\n1pMkTYbtdDf5e+u25fz+/J1PztgJXZLtSe5P8rm+st9M8vkktyX5YJIj+pZdmGRPki8keXFbgUuS\n1o7/qB/Jz2L9GNIPelKSXUnuan4e2ZQnyTubftBtSZ7Tt87mpv5dSTb3lf9oks8267wzSSb7DjUL\npr1Naut/yCT+F037ZwnLO0N3OXDmorJdwDOq6keAvwYuBEhyMnAO8PRmnd9Lctiyo5UkaR0ygZ4q\nl/PoftBW4PqqOgm4vpkHOAs4qXltAd4FvQQQuAh4LnAKcNFCEtjU+T/61lu8rzU1rd/F/rimMb6V\nmtbPfTUsfq/jvPf19Dn1Gzuhq6pPAQcWlX2sqg42szcAxzXTm4Arq+rbVfVFYA+9hkuS1AHr8R9j\n1xyqAzMLv79p66AN6gfR6+/saKZ3AC/vK39v9dwAHJHkGODFwK6qOlBVD9I7MH5ms+xfV9UNVVXA\ne/u2pQFG+X5M8js0qTNGg/axGvs+VNsyzrJR4lpJ7KPEs9y4hu1jmtqmDauwzf8IXNVMH0svwVuw\ntyl7lCRb6B294oQTTliFsNaPhS/XPZe8ZI0jkSQtZXGHYBJt96z9n5iC93N0Vd3XTH8ZOLqZPha4\nt6/eQj/oUOV7B5Svqin4/Ma22gnCoO0s9/PZuPXaQ667mp//sM/gnkte8qi4lhvHwnZWO5mclu/p\nod7nWsXYakKX5NeBg8D7xl23qrYB2wDm5+erzbgkSaObln+amn2z+F2rqkqy6v2YlRwIXyrBGLbO\nUsvG2eY4BzLa+p4M2s7isv755XxOh9rXOMtWuo9xLGefbVlJEtkFbX2fltJaQpfkPOClwOnNZQIA\n+4Dj+6od15RJwGz+M5ckrY01/J/ylSTHVNV9zWWT9zflw/pB+4DTFpV/sik/bkD9R2njQPhadM4n\neWZtHOPEtTghHPX7tpLL/SZpPfbNDpXYd0ErCV2SM4FfBf5tVX2zb9FO4I+SvB14Cr2bez/Txj41\nOV37Umt5VvPIkWbHtHZApDW2E9gMXNL8/FBf+euSXElvAJSHmqTvo8D/3TcQyhnAhVV1IMnXk5wK\n3Ai8GvidSb2Jcf/fD/u/sdzLiCfZvrR99s22cTTT8Dm1dYZ0miznsQVXAH8B/GCSvUnOBy4Fvg/Y\nleTWJO8GqKrbgauBO4CPABdU1Xdbi16SOmTQ0dm1/OfRlSGj16O1OkMxy4OrtGVIP+gS4EVJ7gJe\n2MwDXAfcTW9QuD8A/hNAVR0A3gLc1Lwubspo6rynWedvgA9P4n0t1j9i5DT9/qcpFk23SQ+Gs1b7\nhmWcoauqcwcUX3aI+m8F3jrufqRZ4lnO9iTZTu/y7vur6hlN2ZPoDca0EbgHeGVVPdg8v+m3gbOB\nbwLnVdUtzTqbgf+r2ex/qaodTJFJfmem/fs57fFpfRnSDwI4fUDdAi4Ysp3twPYB5buBZ6wkRq0v\nJrlaznPoJGktXc7qPgOqFdN4VHu1hoReyT6m7XNaMK1xrTU/F0maPqvx2AJJWjVV9akkGxcVb+Jf\nBhjYQW9wgTfR9wwo4IYkC8+AOo3mGVAASXbRSxKvWOXw15VD3Uez1Ih5qzl8t2f6VkfbvzcTR0ka\njWfo1gmPqmrGtfUMqKk1K3/DSz34ddztTPODXqdRW2da/ZwlaXp4hk7STGn7GVAredbTNLDTPZ5R\nnrW12LjPz5q2M4WOcCtJ3eYZOkmz4CvNpZSM8QyokZ6RWVXbqmq+qubn5ubGDmzQmYy2zio5KuFk\nrNfPcjXO1HnmT5La5xm6CZm2I7Iaj7+/qdfKM6AmHPPUmbaOdJuJQletl/c1q+9TkiZhXSd0k+ik\nz+o/qS4mOF2MWY/WPAPqNOCoJHvpjVZ5CXB18zyoLwGvbKpfR++RBXvoPbbgNdB7BlSShWdAwSOf\nASWpRavZ9nq5qCSt84ROUves9jOgZt16PLAxDQfWVuNzn9ZkZj1+xyRpLZnQrVNr8Q+3f5/T2hGR\ntHLTkECttbX4DKYtkfJ7IEmT4aAo6gxvll8+Pzfp0GxfJEld5Rk6SZpioyQZh3qA9yyZtjNQgziQ\niyRp0jxDNwU8MixJ7Vuv7ar/UyRpfTGhWyU+H0qzzA7j6vFz1aH4tydJWsxLLiVJmnGzkATOwnuQ\npNXgGbohPAq6Nsb93NdqJLlJ7dfvoAbxe7Ey/X/DfpaSpK4zoZMkSZKkjvKSy2Xowkhrmg6TPPrv\n91KSJGn9MaFbgZV2oKfhUp9DvYdpiE9L8yHtkiRJ65eXXEqSJElSR63LM3TTeubJS+Y0Tfw+SpIk\n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\nb+pvAq6sqm9X1ReBPcApk3kHkrrIhE6SJKkdvwX8KvDPzfyTga9V1cFmfi9wbDN9LHAvQLP8oab+\nw+UD1pGkRzGhkzRT2rh/RZLGleSlwP1VdfOE9rclye4ku/fv3z+JXUqaUiZ0kmbNiu5fkaRlej7w\nsiT3AFfSu9Tyt4Ejkmxo6hwH7Gum9wHHAzTLnwg80F8+YJ2HVdW2qpqvqvm5ubn2342kzjChkzQz\nWrp/RZLGVlUXVtVxVbWR3qAmH6+qnwU+AbyiqbYZ+FAzvbOZp1n+8aqqpvyc5iqCE4GTgM9M6G1I\n6iATOkmzpI37Vx7By5okrdCbgDcm2UOvjbmsKb8MeHJT/kZgK0BV3Q5cDdwBfAS4oKq+O/GoJXXG\nhqWrSNL0679/JclpbW23qrYB2wDm5+erre1Kml1V9Ungk8303QwYpbKq/hH4qSHrvxV46+pFKGmW\nmNBJmhUL96+cDTwO+Nf03b/SnIUbdP/K3kX3r0iSJHWGl1xKmgkt3r8iSZLUGSZ0kmbdWPevSJIk\ndUnrl1wmOQzYDeyrqpc2IzRdSa8jdTPwqqr6Ttv7laQFK71/RZIkqStW4wzdqM+AkiRJkiStQKsJ\n3ZjPgJIkSZIkrUDbZ+jGeQaUJEmSJGkFWkvo+p8Btcz1fXivJEmSJI2hzTN0C8+AuofeICgvoO8Z\nUE2d/mdAPUJVbauq+aqan5ubazEsSZIkSZpNrSV0y3gGlCRJkiRpBSbxHLphz4CSJEmSJK1A68+h\ng9GeASVJkiRJWplJnKGTJEmSJK0CEzpJkiRJ6igTOkmSJEnqKBM6SZIkSeooEzpJkiRJ6igTOkmS\nJEnqKBM6SZIkSeooEzpJkiRJ6igTOkmSJEnqKBM6SZIkSeooEzpJkiRJ6igTOkmSJEnqKBM6SZIk\nSeooEzpJkiRJ6igTOkmSJEnqKBM6SZIkSeooEzpJkqQVSnJ8kk8kuSPJ7Ule35Q/KcmuJHc1P49s\nypPknUn2JLktyXP6trW5qX9Xks1r9Z4kdYMJnSRJ0sodBH6lqk4GTgUuSHIysBW4vqpOAq5v5gHO\nAk5qXluAd0EvAQQuAp4LnAJctJAEStIgJnSSZkKbR8claVxVdV9V3dJMfwO4EzgW2ATsaKrtAF7e\nTG8C3ls9NwBHJDkGeDGwq6oOVNWDwC7gzAm+FUkdY0InaVa0cnRcklYqyUbg2cCNwNFVdV+z6MvA\n0c30scC9favtbcqGlS/ex5Yku5Ps3r9/f6vxS+oWEzpJM6HFo+OStGxJngC8H3hDVX29f1lVFVBt\n7KeqtlXVfFXNz83NtbFJSR1lQidp5qzw6PjibXkUXNJIkhxOL5l7X1V9oCn+ysLBoubn/U35PuD4\nvtWPa8qGlUvSQK0ldOPevyJJq6Hto+MeBZc0iiQBLgPurKq39y3aCSyMVLkZ+FBf+aub+3lPBR5q\nDj59FDgjyZFNn+mMpkySBmrzDN24969IUqtaOjouScvxfOBVwAuS3Nq8zgYuAV6U5C7ghc08wHXA\n3cAe4A+A/wRQVQeAtwA3Na+LmzJJGmhDWxtqjird10x/I0n//SunNdV2AJ8E3tTWfiUJRjo6fgmP\nPjr+uiRX0hse/KG+SzMlaSxV9WkgQxafPqB+ARcM2dZ2YHt70UmaZa0ldP1GvH9l8Tpb6I00xwkn\nnLAaYUmabQtHxz+b5Nam7NfoJXJXJzkf+BLwymbZdcDZ9I6OfxN4zWTDlSRJWrnWE7rF96/0Dpr3\nVFUlGXj/SlVtA7YBzM/PtzIClKT1o82j45IkSV3R6iiXY96/IkmSJElagTZHuRx3dCdJkiRJ0gq0\necnluPevSJIkSZJWoM1RLse6f0WSJEmStDKt3kMnSZIkSZocEzpJkiRJ6igTOkmSJEnqKBM6SZIk\nSeooEzpJkiRJ6igTOkmSJEnqKBM6SZIkSeooEzpJkiRJ6igTOkmSJEnqKBM6SZIkSeooEzpJ+v/b\nu5tQue46jOPfh8RWrGAblRKbYCKGShC0pWiKLsQXTIrYTRcNol1UsrFYRZAEVy4FUSuEYtEqiLRi\nLRqysGjsOrZFqWnT2GilTWhNBa3gxgZ/LuZcHW/va7jn5X/z/cAh95wZZh5+d+bh/jNnZiRJkhrl\ngk6SJEmSGuWCTpIkSZIa5YJOkiRJkhrlgk6SJEmSGuWCTpIkSZIa5YJOkiRJkhrlgk6SJEmSGuWC\nTpIkSZIa5YJOkiRJkhrlgk6SJEmSGuWCTpIkSZIaNciCLsn+JGeSnE1yeIj7lKTV2E2Spsp+krRW\nvS/okmwBjgIHgL3AwSR7+75fSVqJ3SRpquwnSesxxCt07wPOVtWfqupfwIPArQPcryStxG6SNFX2\nk6Q1S1X1ewfJbcD+qvpst/9p4P1Vddei6x0CDnW71wNnVrnptwB/3eC4fTPzMMw8jPVmfntVvbWv\nMOvVYzfB5fH7nILWMreWFy6PzJPqJlhbP9lNk2bmYbSW+VLyrqmftl5ano1XVfcB9631+kker6qb\neoy04cw8DDMPo8XMl2K93QRtzsbM/WstL5h5yuym6TLzMFrL3GfeIU65PA/snNvf0R2TpDHZTZKm\nyn6StGZDLOgeA/Yk2Z3kCuB24NgA9ytJK7GbJE2V/SRpzXo/5bKqLia5C3gE2ALcX1VPbcBNr+s0\ng4kw8zDMPIwWM/9Xj90Ebc7GzP1rLS+YeRT+7fR/zDwMM/evt7y9fyiKJEmSJKkfg3yxuCRJkiRp\n47mgkyRJkqRGNbmgS7I/yZkkZ5McHjvPUpLsTPJokqeTPJXk7u74tiS/TPJs9+81Y2edl2RLkt8m\nOd7t705yspv1j7s3Z09GkquTPJTkmSSnk9zcwIy/2D0mTiV5IMnrpzbnJPcnuZDk1NyxJeeamW93\n2Z9McuN4ycdlN/XLfuqf/bR52U/9sZv6ZzetrLkFXZItwFHgALAXOJhk77iplnQR+FJV7QX2AZ/r\nch4GTlTVHuBEtz8ldwOn5/a/Bnyzqt4J/A24c5RUy7sH+EVVvQt4D7Psk51xkuuAzwM3VdW7mb3Z\n/XamN+cfAPsXHVturgeAPd12CLh3oIyTYjcNwn7qkf20edlPvbObemQ3rUFVNbUBNwOPzO0fAY6M\nnWsNuX8OfAw4A2zvjm0HzoydbS7jju7B9mHgOBBm32i/danZj70BbwKeo/twn7njU57xdcALwDZm\nnzJ7HPj4FOcM7AJOrTZX4DvAwaWudzltdlPvOe2n/jPbT5t0s596zWg39Z/Zblpla+4VOv73S11w\nrjs2WUl2ATcAJ4Frq+rF7qKXgGtHirWUbwFfBv7d7b8Z+HtVXez2pzbr3cDLwPe7Ux2+m+QqJjzj\nqjoPfB14HngReAV4gmnPecFyc23uOdmT5ubQUDeB/dQ7+2lTa24ODfWT3dQzu2l1LS7ompLkjcBP\ngS9U1T/mL6vZknwS3xuR5BPAhap6Yuws67AVuBG4t6puAP7JolMEpjRjgO7c6VuZFerbgKt47cvz\nkze1uWr9WukmsJ+GYj9pKlrpJ7tpGHbT6lpc0J0Hds7t7+iOTU6S1zErpB9V1cPd4b8k2d5dvh24\nMFa+RT4AfDLJn4EHmZ06cA9wdZKFL6Cf2qzPAeeq6mS3/xCzkprqjAE+CjxXVS9X1avAw8xmP+U5\nL1hurs08J3vWzBwa6yawn4ZiP21ezcyhsX6ym4ZhN62ixQXdY8Ce7pNtrmD2pshjI2d6jSQBvgec\nrqpvzF10DLij+/kOZueHj66qjlTVjqraxWymv66qTwGPArd1V5tMXoCqegl4Icn13aGPAE8z0Rl3\nngf2JXlD9xhZyDzZOc9Zbq7HgM90n9i0D3hl7vSCy4nd1BP7aTD20+ZlP/XAbhqM3bSaId8ouFEb\ncAvwB+CPwFfGzrNMxg8ye1n1SeB33XYLs3OrTwDPAr8Cto2ddYnsHwKOdz+/A/gNcBb4CXDl2PkW\nZX0v8Hg3558B10x9xsBXgWeAU8APgSunNmfgAWbnqb/K7H/z7lxurszeAH60ez7+ntmnUI0+55Hm\nZjf1n99+6jez/bRJN/up9+x2U7+Z7aYVtnQ3KkmSJElqTIunXEqSJEmScEEnSZIkSc1yQSdJkiRJ\njXJBJ0mSJEmNckEnSZIkSY1yQSdJkiRJjXJBJ0mSJEmN+g8oDkOxURM5kgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc8b57378d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import math\n",
    "\n",
    "counts = np.zeros(100)\n",
    "fig, axes = plt.subplots(2, 3, figsize=(15, 8), sharex=True)\n",
    "axes = axes.reshape(6)\n",
    "# mangle subplots such that we can index them in a linear fashion rather than\n",
    "# a 2d grid\n",
    "\n",
    "for i in range(1, 1000001):\n",
    "    counts[random.randint(0, 99)] += 1\n",
    "    if i in [10, 100, 1000, 10000, 100000, 1000000]:\n",
    "        axes[int(math.log10(i))-1].bar(np.arange(1, 101), counts)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "What we can see from the above figures is that the initial number of counts looks *very* uneven. If we sample fewer than 100 draws from a distribution over 100 outcomes this is pretty much expected. But even for 1000 samples there is a significant variability between the draws. What we are really aiming for is a situation where the probability of drawing a number $x$ is given by $p(x)$. \n",
    "\n",
    "### The categorical distribution\n",
    "\n",
    "Quite obviously, drawing from a uniform distribution over a set of 100 outcomes is quite simple. But what if we have nonuniform probabilities? Let's start with a simple case, a biased coin which comes up heads with probability 0.35 and tails with probability 0.65. A simple way to sample from that is to generate a uniform random variable over $[0,1]$ and if the number is less than $0.35$, we output heads and otherwise we generate tails. Let's try this out."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nzL+v69p5en98f6+yb39e2bc/r4Kidv4eAQAAQUFoCyOX26vckSE8MDj3CqmxTtr+wun3HVwj2Uaa\nkPTCp+ZkqbSqXo+u3qcp6YOV0MEb8qvyR6m8tkEvuQ5r44EyjUmNV1ofOlS7u8YNS9TcsSl6Yu2B\nNnv5fD6ryx98Xzf8cY2k02cmv3LRRH3loomaMCwxpPUGwo3njNXVZ40KdxktEmOj5LpzqWa3CsZL\nfvlOy8d/eG+vPvXrD9ptVmKtVVFZtTYdLNOdzxa23L7igfd02FMtSSoo8qiwnWMLAABAYBDawuRE\nRa0Oe2qUF4r9bM2y8qXk0e0vkdz/gWScUtbc0NXTz5w3IU3Dk2JVWdeo2WM6njmbNzZFo1Pi9cTa\ng9pwoLTP72frimvOGqV9J6r00V7/mW3usmoVHvbqRGWdyqrqlTyobadNyR/2bls8SY5TllyiZxJi\no/T0f5yjry+Z1Ob276/IkSSt21+qD/eeOO1xy+97V+fc/YYuf/D90+5b8NM3dLCkSiseeE8X3//u\ngFxmyVl4AIBQILSFSfNhuiGdaTNGyr1c2v2GVHXKgccHVksZM6TYvjerESminA5d0XTQ8ZmW9Dkc\nRlfN8Z9FdrS8tl8vjWy2PC9DSXFRemLtQdU3+rT8vnd1U6u9VbNGDyGchcgtF07Umu9epOsXjNG7\n37xAN5yd3XLfE2v9ey2ttaqsbVB9o0/bj7RtXrLv7ku0s9W5c+f9/M2Wj5f977tatbntkRb90bHy\n2pZlomO//YJWbXbLWqtNB8vCXRoAoJ8KzYYKnKbA7d8PkhvKmTZJylspfXC/tP15afZ1/tsaaqVD\n66S5XwxtLf3Q9QuytfdYpRZOGn7G666ck6V7X9vZcjZZfzcoxqnLZ2bqyXUHddWcLHmq6+WplgbH\nRWnl7CydO6Hjhh0IvOFJcbrzsryWz3fdtVw/eq5Qf169X//a5NaIwbEq9tae9rjvXTJVkhQT5dDW\nHy7RtB++cto1f193UJfOGNmtet7eeUyTRiQqI3lQN7+Sk2bc+Yo81fV69Ka5OndCWstxG5/9/Yd6\nf9cJ3fHJHN35bKHuu2amLpuZ2e3nr21o1OTvtd999yuPb9RXHt/oryMrWZsPebRydqbuvXqmJKm6\nrlGvFB5RsbdGM7KGyFNdryVNezYxMFlr2xwJAwCdMeFa2pGfn2/XrVsXlteOBF9+bIM2HyzTe9+6\nMLQvbK10/0wpZZx0XdNh2/tXS39cJl3zmDTlktDWM4Bd//Aard1Xoi13LOmzZ7R1R0GRRyseCBAY\n0gAAGfhJREFUeE9T0pNaZm/Om5imR2+a18kjEQrN49Oery6apDe2F+uPN85tc2be0fIazb3rdUnS\nN5ZO1j0v75AkZSTH6cX/PE9D4js/X89bU6/pTeEvPsYp151Lu/Rmtq7Bp2in0Tl3vyG3p/3OpB2Z\nNXqI/nHz2afN7v7+3T0q9tbolgsmqsDt0YxRQ5QYG6XVu0/o2t99eNrz3Hv1DN3xL5fKaxs6fK38\nMUO1rqnhUHv2/vTilq/XW1Ove17aoavyszQ9q//PwA8E9Y0+Tfzui12+fuWsTN1y4QSNHDKozREh\noXaotErr95dqdEq86hutfvxcobYWebRo6nD95nNzWn5nNfrsaV2DG31WPmsDdoRJuFhrdai0Wuf9\n/E1dnZ+lT581Sh8XV+j2p7eedu1/LByvq/JHaXRKvA6VVunahz5s8/fSytmZyskYrAff3KXSqvp2\nX+/s8anyVNfL5fYqIzlOh7v599qZTElP0nULxuiKWZmKj4lq2b9c2+BTSVWdJGnvsUp5qut1oKRK\n7358TJ9fkK3ahkYdK6/VpBFJmjs2RbFRDv6xIQiMMeuttfmdXkdoC4+F97ypKemD9Zvr5oT+xV+7\nU3r/PunrO6WENOmdX0hv/Fj65l4pPiX09QxQh0qrdKi0WvPHpYa7lJBZ8cC7KijyKi0xRvPGpWpJ\nzogezXogOL77zFb99aMDp92+6QeLOwxgZVV1SoqLltNhtPd4pS74xVst97nuXNpuQ566Bp98Tb97\nVu8+oRsfOblU9ssXjNc3lk45Y51Pbzik257c3JUvKeBe+eonNGpovAbFnHxDvelgmQ6UVOnN7Uf1\nzMbTu6T21G8+N1vL8jIC9nzoGWutXth6RF9+bEOb2++/dpa+8vhG3fOp6dp1rEK/fXtPmCrsXEZy\nnB774nwNinbqnpd36B+dnJ0J9Ff77o68yQlCWwQrr6nXtB++oq8tnqRbL5oY+gKObJV+c6604pdS\n/v+T/nKl5CmSvnz6vyQDgfToh/v1/X8WaNHU4fr99WeFuxycoq7Bp/95ZYcafFZx0Y5Ow1N7mpcp\nNvvVZ2bplsc26r1vXaDBg6I1485X1N6vnYunpeuFrUckSaNT4vX76/P9Z9kdKNWMLP+eR2utdh+r\n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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc8b5502b38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# number of samples\n",
    "n = 1000000\n",
    "y = np.random.uniform(0, 1, n)\n",
    "x = np.arange(1, n+1)\n",
    "# count number of occurrences and divide by the number of total draws\n",
    "p0 = np.cumsum(y < 0.35) / x\n",
    "p1 = np.cumsum(y >= 0.35) / x\n",
    "\n",
    "plt.figure(figsize=(15, 8))\n",
    "plt.semilogx(x, p0)\n",
    "plt.semilogx(x, p1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see, on average this sampler will generate 35% zeros and 65% ones. Now what if we have more than two possible outcomes? We can simply generalize this idea as follows. Given any probability distribution, e.g. \n",
    "$p = [0.1, 0.2, 0.05, 0.3, 0.25, 0.1]$ we can compute its cumulative distribution (python's ``cumsum`` will do this for you) $F = [0.1, 0.3, 0.35, 0.65, 0.9, 1]$. Once we have this we draw a random variable $x$ from the uniform distribution $U[0,1]$ and then find the interval where $F[i-1] \\leq x < F[i]$. We then return $i$ as the sample. By construction, the chances of hitting interval $[F[i-1], F[i])$ has probability $p(i)$. \n",
    "\n",
    "Note that there are many more efficient algorithms for sampling than the one above. For instance, binary search over $F$ will run in $O(\\log n)$ time for $n$ random variables. There are even more clever algorithms, such as the [Alias Method](https://en.wikipedia.org/wiki/Alias_method) to sample in constant time, after $O(n)$ preprocessing."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The normal distribution\n",
    "\n",
    "The normal distribution (aka the Gaussian distribution) is given by $p(x) = \\frac{1}{\\sqrt{2 \\pi}} \\exp\\left(-\\frac{1}{2} x^2\\right)$. Let's plot it to get a feel for it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n8P8D2I2bSzaeRHwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc8b45a6630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(-10, 10, 0.01)\n",
    "p = (1/math.sqrt(2 * math.pi)) * np.exp(-0.5 * x**2)\n",
    "plt.figure(figsize=(10, 5))\n",
    "plt.plot(x, p)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sampling from this distribution is a lot less trivial. First off, the support is infinite, that is, for any $x$ the density $p(x)$ is positive. Secondly, the density is nonuniform. There are many tricks for sampling from it - the key idea in all algorithms is to stratify $p(x)$ in such a way as to map it to the uniform distribution $U[0,1]$. One way to do this is with the probability integral transform. \n",
    "\n",
    "Denote by $F(x) = \\int_{-\\infty}^x p(z) dz$ the cumulative distribution function (CDF) of $p$. This is in a way the continuous version of the cumulative sum that we used previously. In the same way we can now define the inverse map $F^{-1}(\\xi)$, where $\\xi$ is drawn uniformly. Unlike previously where we needed to find the correct interval for the vector $F$ (i.e. for the piecewise constant function), we now invert the function $F(x)$. \n",
    "\n",
    "In practice, this is slightly more tricky since inverting the CDF is hard in the case of a Gaussian. It turns out that the *twodimensional* integral is much easier to deal with, thus yielding two normal random variables than one, albeit at the price of two uniformly distributed ones. For now, suffice it to say that there are built-in algorithms to address this. \n",
    "\n",
    "The normal distribution has yet another desirable property. In a way all distributions converge to it, if we only average over a sufficiently large number of draws from any other distribution. To understand this in a bit more detail, we need to introduce three important things: expected values, means and variances. \n",
    "\n",
    "* The expected value $\\mathbb{E}_{x \\sim p(x)}[f(x)]$ of a function $f$ under a distribution $p$ is given by the integral $\\int_x p(x) f(x) dx$. That is, we average over all possible outcomes, as given by $p$. \n",
    "* A particularly important expected value is that for the funtion $f(x) = x$, i.e. $\\mu := \\mathbb{E}_{x \\sim p(x)}[x]$. It provides us with some idea about the typical values of $x$.\n",
    "* Another important quantity is the variance, i.e. the typical deviation from the mean \n",
    "$\\sigma^2 := \\mathbb{E}_{x \\sim p(x)}[(x-\\mu)^2]$. Simple math shows (check it as an exercise) that\n",
    "$\\sigma^2 = \\mathbb{E}_{x \\sim p(x)}[x^2] - \\mathbb{E}^2_{x \\sim p(x)}[x]$.\n",
    "\n",
    "The above allows us to change both mean and variance of random variables. Quite obviously for some random variable $x$ with mean $\\mu$, the random variable $x + c$ has mean $\\mu + c$. Moreover, $\\gamma x$ has the variance $\\gamma^2 \\sigma^2$. Applying this to the normal distribution we see that one with mean $\\mu$ and variance $\\sigma^2$ has the form $p(x) = \\frac{1}{\\sqrt{2 \\sigma^2 \\pi}} \\exp\\left(-\\frac{1}{2 \\sigma^2} (x-\\mu)^2\\right)$. Note the scaling factor $\\frac{1}{\\sigma}$ - it arises from the fact that if we stretch the distribution by $\\sigma$, we need to lower it by $\\frac{1}{\\sigma}$ to retain the same probability mass (i.e. the weight under the distribution always needs to integrate out to 1). \n",
    "\n",
    "Now we are ready to state one of the most fundamental theorems in statistics, the [Central Limit Theorem](https://en.wikipedia.org/wiki/Central_limit_theorem). It states that for sufficiently well-behaved random variables, in particular random variables with well-defined mean and variance. To get some idea, let's repeat the experiment described in the beginning, but now using random variables with integer values of $\\{0, 1, 2\\}$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mean 0.9, variance 0.49\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAE2CAYAAABbWScvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd81dX5wPHPuSP7Zk9GCJCQS1hhBpWNIk7EgbjrtlJr\ntbWtbbVaW7VqrT+3uFC0uHAgigPZm4Q9EkaAkEH2JOMmuef3xzcsSUgCN7mJPO/X676S3O84zw34\n4vGc5/scpbVGCCGEEEK0LZO7AxBCCCGEOBtI0iWEEEII0Q4k6RJCCCGEaAeSdAkhhBBCtANJuoQQ\nQggh2oEkXUIIIYQQ7UCSLiGEEEKIdiBJlxBCCCFEO5CkSwghhBCiHVjcHUBjQkNDdUxMjLvDEEII\nIYRoVkpKSoHWOqy58zpk0hUTE0NycrK7wxBCCCGEaJZS6kBLzpPlRSGEEEKIdiBJlxBCCCFEO5Ck\nSwghhBCiHUjSJYQQQgjRDiTpEkIIIYRoB5J0CSGEEEK0A0m6hBBCCCHaQbNJl1Kqu1JqsVJqh1Jq\nu1Lq/kbOUUqpF5VSe5RSW5RSQ447dotSanfD6xZXfwAhhBBCiM6gJc1R64Dfa603KKVsQIpS6ket\n9Y7jzrkIiGt4JQGvAUlKqWDg78AwQDdcO09rXezSTyGEEEII0cE1m3RprXOAnIbvy5VSO4GuwPFJ\n1xTgfa21BtYopQKVUlHAOOBHrXURgFLqR2AyMMeln6KVVmdsoqzmMP42f3eG0ageXuBnVu4O4yQe\n1mC8vLq4OwwhhBCi02rVNkBKqRhgMLD2Z4e6AgeP+zmz4b2m3ner3+4+yEFTd6De3aGcJETn8wz3\n40WNu0M5gcnkyajz1mC1drxEVQghhOgMWpx0KaX8gLnA77TWZa4ORCl1F3AXQHR0tKtvf4Ib6otI\nz9zCOeecg9nccbafzKs18c+cMDaFv8ld4VXuDueoyqp97NnzNKWlyYSGTnB3OEIIIUSn1KKMQyll\nxUi4PtRaf97IKVlA9+N+7tbwXhbGEuPx7y9pbAyt9UxgJsCwYcN0S+I6XVPixvDeqvcYNDyShD4J\nbTlUqyXXpvNuoYm745II9egYCWF9fTV79z5PcfEaSbqEEEKI09SSpxcV8DawU2v9fBOnzQNubniK\ncSRQ2lAL9j0wSSkVpJQKAiY1vOdW0dHReHt7k5qa6u5QTvKXXl2orHfywoFD7g7lKLPZi4CARIpL\nfr6qLIQQQoiWakmfrvOAm4AJSqlNDa+LlVL3KKXuaTjnWyAd2AO8CdwL0FBA/wSwvuH1jyNF9e5k\nNpuJi4tj9+7d1Nd3rLquPr5eXB8VwntZhRyo6jh1XUGBSZSX76CurtzdoQghhBCdUrNJl9Z6hdZa\naa0Haq0TG17faq1f11q/3nCO1lrP0Fr31loP0FonH3f9O1rr2IbXu235YVrDbrdTVVVFRkaGu0M5\nyR96RmJR8HR6jrtDOSowcATgpKQkudlzhRBCCHGys7Yjfe/evTGbzaSlpbk7lJNEelq5q3s4X+SV\nsLm80t3hABAQMBilPCguWePuUIQQQohO6axNujw9PenVqxepqakY7cU6lhnR4QRbzfxzb3aHiM9s\n9ibAfxAlxevcHYoQQgjRKZ21SRcYS4wlJSXk5ua6O5ST+FvMPNAjkuXFFSwp6hh1VIFBIygr3yZ1\nXUIIIcRpOKuTrj59+gB0yCVGgJu7hhDt5cE/07NxdoDZrqDAJKSuSwghhDg9Z3XSZbPZ6NatW4ds\nHQHgaTLxcK8otldU83mu+7erDAgYglJWSkpkiVEIIYRorbM66QKIj48nJyeH0tJSd4fSqCnhgQz0\n8+bpfTlU1zvdGovZ7I2//0Dp1yWEEEKchrM+6bLb7UDHXWI0KcXfenchs7qWWVkF7g6noV/XNurq\nKtwdihBCCNGpnPVJV2hoKMHBwR026QIYE2xjXJCN/zuQS2ltnVtjCQoaidb1lJamuDUOIYQQorM5\n65MupRR2u519+/ZRXV3t7nCa9LfeUZTU1fNSRp5b4zD6dVkoLpYlRiGEEKI1zvqkC4wlRqfTyZ49\ne9wdSpP623y4KiKItzLzyap2uC0Os9lH6rqEEEKI0yBJF9CtWzd8fHw67FOMR/yxZyRODc/td+9m\n2EZd11bq6g67NQ4hhBCiM5GkCzCZTMTHx7N7927q6txbM3Uq0d6e3No1lI9zikg9XOW2OAIDk6Su\nSwghhGglSboaxMfHU1NTw4EDB9wdyindHxOBn8XEv/a6bzNso1+XRZYYhRBCiFaQpKtBr169sFgs\nHX6JMdhq4b7oCH4sLGN1iXvaNlgsvvjbBlAixfRCCCFEi0nS1cDDw4PevXuTlpbWITaYPpU7uoUR\n5WnlCTduhh0YlESZ1HUJIYQQLSZJ13HsdjtlZWXk5Lhv6a4lvM0mHoqJZENZJd/ku6eTflBgElrX\nUVq6wS3jCyGEEJ2NJF3H6dOnD0qpDt0o9YhpkcH08fHiyfQcap3tP9sVEDAUpcyUSF2XEEII0SKS\ndB3H19eX7t27d/i6LgCLSfG33lGkV9XwYU5h+49v8cVmGyDF9EIIIUQLSdL1M3a7ndzcXIqLi90d\nSrMuCPFnZIAv/9l/iMN19e0+flBgEmVlW6ivr2z3sYUQQojORpKun4mPjwc67gbYx1NK8UjvLuQ7\n6njtYH67jx8UdKSua2O7jy2EEEJ0NpJ0/UxISAhhYWGdYokRYGiAL5eEBfDqwTzyHbXtOvaRuq7i\n4jXtOq4QQgjRGUnS1Yj4+HgOHDhAZWXnWDZ7uFcUNU4nz+/PbddxLRY/bLb+UtclhBBCtECzSZdS\n6h2lVJ5SalsTxx9SSm1qeG1TStUrpYIbju1XSm1tOJbs6uDbit1uR2vN7t273R1Ki8T6eHFDVAiz\nswtIr6xp17GP1XW5b1siIYQQojNoyUzXLGByUwe11s9qrRO11onAw8BSrXXRcaeMbzg+7MxCbT9d\nunTBz8+vU9R1HfGHmEg8TCaeSm/fHmOBgSPQulb6dQkhhBDNaDbp0lovA4qaO6/BdcCcM4qoAziy\nAfaePXs69AbYxwv3tHJP9zC+zi9hQ5lru8RX1NWz63B1o8cCA4cBJlliFEIIIZrhspoupZQPxozY\n3OPe1sAPSqkUpdRdzVx/l1IqWSmVnJ/f/k/i/Vx8fDwOh4N9+/a5O5QWu7d7OCFWi0u3B/qxoJQx\n61KZsD6VvJqTC/UtFhv+tv6UFK9zyXhCCCHEL5UrC+kvA1b+bGlxlNZ6CHARMEMpNaapi7XWM7XW\nw7TWw8LCwlwY1unp2bMnVqu10zzFCOBnMfNgTASrSw6zsLDsjO5V6Khjxo4D3LR1HyYFdRoWF5U3\nem5g0AhKyzZLXZcQQghxCq5Muqbzs6VFrXVWw9c84AtghAvHa1NWq5W4uDjS0tJwOp3uDqfFbuoS\nQoy3B/9Kz6H+NGa7tNZ8mVvM6HU7mZdXwu9jIliZ1JdwDwuLihpP5IICR6K1Q/p1CSGEEKfgkqRL\nKRUAjAW+Ou49X6WU7cj3wCSg0ScgO6r4+HgqKirIzs52dygt5mEy8XCvKFIPV/PpoZaW4hlyahzc\nsnUf9+w4QLSXJz8M68NDPaPwNJkYH+zP0qLyRhO5I3VdJSWyxCiEEEI0pSUtI+YAq4F4pVSmUup2\npdQ9Sql7jjttKvCD1vr4Cu4IYIVSajOwDvhGa/2dK4Nva3FxcZ1mA+zjXR4WSKLNh2f2HaKqvvlZ\nOq01H2QXMmZtKsuLy/l77y58MzSOvn7eR88ZH2yjpK6ejWUn9y6zWGzYbAlSTC+EEEKcgqW5E7TW\n17XgnFkYrSWOfy8dGHS6gXUEPj4+9OjRg9TUVCZOnOjucFrM2B4oiqs27eXtzHx+0yOiyXP3V9Xw\n+9SDrCyp4NxAP/4T352ePp4nnTc22IYJ+KmwjGEBvicdDwpM4mDmbOrrqzGbvVz5cYQQQohfBOlI\n3wy73U5+fj6FhYXuDqVVzguyMSHYxksZeRTXntz2ol5rXs/IY/y6VLaUV/JsfDc+S+zdaMIFEGS1\nMNTft+m6riCjrqusbJNLP4cQQgjxSyFJVzM60wbYP/e33l0oq6vnxQMnbg+0s6KKS1N289jebEYF\n2Vg6ws5NXUIxKXXK+00IsbG5vKrRPR4DAoYBiuJiWWIUQgghGiNJVzOCgoKIiIjoVK0jjkjw8+aa\nyCDeySogs9qBw+nkuX2HmJS8iwPVNbyW0IP3B/Ski5dHi+43PtgfgKWNtI6wWv2lrksIIYQ4BUm6\nWiA+Pp6DBw9y+LBrO723hz/2jALgobSDTErexXP7D3FZeCDLRvRlakQQqpnZreMNtHkTarWwqIl+\nXUGBIykr20h9ffvu/yiEEEJ0BpJ0tcCRDbB37drl7lBarZuXB7d3DWNxUTmldfW8P6Anryb0INSj\n2WcoTmJSinHBNpYUlTXROmIETmfL67ry8r5nxYpzKSpa1epYhBBCiM5Gkq4WiIqKwt/fv1PWdQH8\nvmcE/4nvztIRdiaFBpzRvSaG+FNUW8/mRlpHBAYOB1SzS4xaO0nf9yJbt91LjSOXQ4e+PKOYhBBC\niM6g9dMdZyGlFPHx8WzatIna2lqsVqu7Q2oVX7OZG7qEuOReY4NtKGBRUTlDftY6wmoNwOaXQEnx\nWujZ+PX19ZVs3/EQ+fnfERV5JXX1FRQWLUVrJ0rJ/wMIIYT45ZJ/5VrIbrdTW1tLenq6u0Nxq2Cr\nhcH+Pk22jjD2YWy8rquqKovklGnk5/9AXOxf6Nv3GcJCJ+FwFFBevr2tQxdCCCHcSpKuFurRowee\nnp6d8ilGV5sQ7M/GskoKHSf3/woKTMLprKGsbPMJ7xeXrGd98hVUV2eSOOgtoqNvRylFSMhoQFFY\nuKR9ghdCCCHcRJKuFrJYLJ1yA+y2MCHEhgaWFp/8FOORuq6S4+q6srI+YuPGm7BaAxk29HNCQsYe\nPebhEYq//0AKCpe2Q+RCCCGE+0jS1Qrx8fFUVlaSmZnp7lDcKtHmQ7DVzKLCk5cYrdZA/PzsFJes\nxemsJW3XY6Sm/ZXgoHMYNnQuvr69TromJGQcZWWbcDhat0G3EEII0ZmcnUnXac5UxcXFYTKZzvol\nRqN1hD+Li8pxNtI6IigwidLSDWzafCuZmbOJjr6DQYPewmr1b/R+oSHjAE1R0fK2DVwIIYRwo7Mz\n6br5ZnjwQag8ue3BqXh5eRETE9NpW0e40oRgG4W1dWwprzrpWFCQUddVUpJCQt9niYt9GKXMTd7L\nZuuP1RpMgdR1CSGE+AU7+5Ku+noICID//hcGDYLlrZtdsdvtFBYWkp+f30YBdg7jgv0bWkecvMQY\nHDyarl1vZOiQ/xEVdWWz91LKREjIWIqKlqN1fRtEK4QQQrjf2Zd0mc3wyiuwaJGRgI0dC/ffDy3c\n4qczb4DtSqEeFgbZfFhceHIxvdnsjT3+cQICBrf4fiEhY6mtLaasbIsrwxRCCCE6jLMv6Tpi/HjY\nsgVmzIAXX4SBA2Fp80/QBQQEEBUVddbXdYHxFGNK2WGKa09uHdFaIcGjAZMsMQohhPjFOnuTLgA/\nP3jpJViyxPh53Di47z6oqDjlZXa7nczMTCqaOe+XbkKwP05gaRMbYLeG1RpIQMBg6dclhBDiF+vs\nTrqOGDvWmPW6/35j6XHgQFi8uMnTZYnRMNjfhyCLucnu9K0VGjKO8vJt1NSc3fVyQgghfpkk6TrC\n1xdeeMFYYjSbYcIEY+mxkdmsiIgIAgMDz/olRrNSjA22Ndk6orVCQsYBUFgkjVKFEEL88kjS9XOj\nR8PmzfDAA/DaazBgAPz00wmnHNkAOz09nZqak/cYPJtMCPEn31HH9oqTW0e0lp9fXzw8wimU7vRC\nCCF+gSTpaoyPDzz/PKxYAR4ecP75cM89UHZsGc1ut1NfX8/evXvdGKj7jQ+2AbCokacYW0spRWjI\nOIqKluN0nnlxvhBCCNGRSNJ1KueeC5s2wR/+ADNnGrNeP/4IQHR0NF5eXmd9XVeYh5WBft4uq+sK\nCRlHXV05pWUbXXI/IYQQoqNoNulSSr2jlMpTSm1r4vg4pVSpUmpTw+vR445NVkqlKaX2KKX+7MrA\n2423Nzz7LKxcaXw/aRLcdRfmigr69OnDrl27qK8/uxt6TgjxJ7nsMKUuaB0RHHwuSlnkKUYhhBC/\nOC2Z6ZoFTG7mnOVa68SG1z8AlLHvyyvARUACcJ1SKuFMgnWrc86BjRvhj3+Et9+G/v0Zmp9PVVUV\nBw8edHd0bjUh2Ea9hmXFZ95Cw2KxERAwVJIuIYQQvzjNJl1a62VA0WncewSwR2udrrV2AB8BU07j\nPh2Htzf8+9+wahXYbPS45x6mfP01e5KTXXL70rxDZKXucMm92tMQf18CXNw6oqIilerqHJfcTwgh\nhOgIXFXTdY5SarNSaoFSql/De12B46eAMhvea5RS6i6lVLJSKrnD72uYlAQbNsDDDzNo40aS7rgD\n/c03Z3TLOoeDuU8+ykeP/YmN3893UaDtw2JSjAmysbiwHO3K1hHyFKMQQohfEFckXRuAHlrrQcBL\nwJencxOt9Uyt9TCt9bCwsDAXhNXGvLzgySdJffddqjw8UJdeCrfeCsXFp3W79fPmUpyTTWSvWBa9\n8zqrPv2fSxKY9jIhxMYhRy07Dlef8b18fePw8uwiS4xCCCF+Uc446dJal2mtKxq+/xawKqVCgSyg\n+3Gndmt47xel+5VX8sZdd5Fx000wezb07w/zWzdTVZyTxdovPyH+3DFc98Rz9Bs7kdWf/Y9F776B\ndjrbKHLXmhDsD8CiwjNfYlRKERI6jqLiVTidZ3cfNCGEEL8cZ5x0KaUilVKq4fsRDfcsBNYDcUqp\nnkopD2A6MO9Mx+tobDYbkT168N2oUbB2LYSEwGWXwc03Q1HzpXBaaxa+/Rpmi5VxN9+ByWzmwnvu\nZ+glV7Dp+/l8+/J/qK/r+D2rIjyt9Hdx64j6+sOUlLimXk4IIYRwt5a0jJgDrAbilVKZSqnblVL3\nKKXuaTjlamCbUmoz8CIwXRvqgN8A3wM7gU+01tvb5mO4l91uJzs7m7K4OEhOhkcegTlzoF8/mHfq\nPDN11TIytm5i9HW34BcUDIAymRh70+2Mmn4zqSuX8tWzT1Bbc+bLdm1tfLCN9aWHKa878xYawUHn\noJSH1HUJIYT4xWjJ04vXaa2jtNZWrXU3rfXbWuvXtdavNxx/WWvdT2s9SGs9Umu96rhrv9Va99Fa\n99Za/6stP4g7nbABtocH/OMfsG4dRETAlClw441QWHjSddWHK1jy3ptE9o5j4AUnduVQSpE0dRoX\n3Pkb9m3ewGf/epTqRvaB7EgmhPhTp2FZ8Zl3pzebfQgKHEGBJF1CCCF+IaQjvQuEhYURHBx84gbY\ngwcbiddjj8HHHxuzXl+e+IzBio9mU1VWxvl3zMBkMjd674HnT+ay3/2J3L27+PjxP1NRfDrdO9rH\nMH9fbGYTi12wJRBASOg4Kiv3UFV1dvdBE0II8csgSZcLHNkAe9++fVRXH7cM6OEBf/+7seQYFQVT\np8L110NBATl70tj847cMnnwpEb1iT3n/PiNHMfVPj1Gae4iPHn2IkkMds3+V1aQYE2xjUVGZS568\nDJXWEUIIIX5BJOlyEbvdjtPpZM+ePScfHDTImPV64gn47DN0v36k/eEB/AKDOHfajS26f4+BiVzz\n6L+oqapizqMPkbc/3cWfwDUmBPuTXVNLqgtaR3h7x+DtHU1+/g+dqn2GEEII0RhJulyke/fu+Pj4\nNL0BttUKf/sbpKRQafNj3FcLuH5PFp6HD7d4jKjYeKY/9m9MFgufPP4wmakd77mE8cE2ABYVnfkS\no1KKqKirKSpeSWrqX3A6O/5TnEIIIURTJOlyEZPJRJ8+fdi9e/cpN8Au7xLFu+cksn3SBPyWr4CE\nBPj00xaPE9KtO9f94xl8AoOY+69HSd+w3hXhu0wXLw/6+nqx2AX9ugBietxLTMwMsnM+Yeu2e6mv\nr3LJfYUQQoj2JkmXC9ntdqqrqzlw4ECT5yyeNZN6rek2+0NUSgrExMC0aXD11ZCb26Jx/EPDmf74\nvwnp1p0vn32CHcsXu+gTuMaEEH/Wlh6mwgWtI5RS9O71IPF9HqegYBEbN95Ebe3pdf0XQggh3EmS\nLhfq1asXFovlxKcYj7M3ZR27161i5FXTCQiPNLrXr14NTz0FX39tPOH4/vtwipmyI3z8A7jmkSfp\n1rc/C17+DxsWdJy+sxOCbdRqzVIXtI44olu3GxnQ/2XKK7aTnDKd6upsl91bCCGEaA+SdLmQh4cH\nvXv3JjU19aTC79qaaha9+zoh3aIZdtnUYwcsFvjzn2HjRoiNhVtugQEDjDYTzWwB5Onjw5V/fozY\n4eeweNZMVn7yQYcoOE8K8CPEauGrvBKX3jc8fDKJg2bhcOSSnHw1FRVN1M8JIYQQHZAkXS4WHx9P\nWVkZhw4dOuH9NXM/oiw/j/NvvxezxXryhQkJsGqVkWwpBdOnG8nXJ5+cMvmyeHhw2QN/pv/4SayZ\n+xE/vfO62/drtJgUl4UH8mNBKYddsMR4vKCgJIYO+RiAlA3XUly8zqX3F0IIIdqKJF0u1qdPH4AT\nlhgLDh4gef4X9Bt3Pt0S+jd9sclk1Hdt2QIffQRaw7XXwsCBRrF9E8mUyWxm0t33Mfzyq9j8wzd8\n89Jz1NfVuvRztdbU8ECqnJrvCkpdfm8/v3iGDfsMD49wNm2+hZycuS4fQwghhHA1SbpczM/Pj+7d\nux9tHaGdTha+9Qoe3j6MueHWlt3EbDaSra1b4X//M2q8pk2DxESYO7fR5EspxZgbbmXMDbeStmoZ\nXz7zBLXV7tuvcXiAL109rXzh4iXGI7y8ujBs6McE+A9hx84/kpb2GE6no03GEkIIIVxBkq42YLfb\nOXToECUlJWxbupCs1B2MufFWfPwDWncjsxmuuw62bYMPPwSHw3jKcfBg+PzzRpOv4ZdfxaR7fsuB\nLZv49J9/parCdcXsrWFSiisiglhSVEZRbdv017Jag0hMfI/o7reTmTWbDRtvoqYmv03GEkIIIc6U\nJF1twG63A7B18yaWffAuXe0J9B97/unf0Gw2tg/avh0++ACqq+Gqq2DIEPjiC2MZ8jgDxk/isgf/\nTN6+vXz89z9RXlRwJh/ntE0ND6ROw/w2mu0CMJksxMX9hX79XqC8fBvr1l9OaemGNhtPCCGEOF2S\ndLWBkJAQQkNDWb9yBY6qSs6/YwbK5IJftdkMN9xgJF+zZ0NlJVx5pZF8ffXVCclX3IhzufLhf1Be\nmM9Hj/6J4pysMx+/lfr5eRPn48kXeW3fVysy4jKGDZuL2eRFyobrycz6X4d4klMIIYQ4QpKuNtI1\nNISyGgeDLrqc0O49XHtziwVuvBF27ID33oOKCrjiChg6FObNO5p8RfcfyLRHn6K2uoqP/v6ndu9e\nr5TiivAg1pQcJqem7eutbH52hg//guCgc0hLe4SdO/9IXV1Fm48rhBBCtIQkXW2gvq6W3JTVoEwE\n9Utsu4EsFrj5Zti5E2bNgrIymDIFhg0zmq1qTUSvWKb/4xl8/AP44t+P8+1Lz1FZ5vonCpsyNSII\nDXyV23ZLjMezWgMZNOgtYmJ+Q86hL1i3/jJKSze1y9hCCCHEqUjS1QaSv/6Ciox0vD092b1nb9sP\naLEYTVVTU+Hdd6GkBC6/HIYPh/nzCY7qyo1Pv8A5V19P2uoVzHrw16SuXNouy2+9fDwZaPNulyXG\nI5Qy07vXAwwZMgftrCNlwzT27XtJNswWQgjhVpJ0uVhJ7iHWzP2IPiPOpW+/fuzZs4e6unb6x95i\ngV/9yki+3n4biorgsssgKQnz9z9w7tXXcdPTLxAQEck3Lz7LV8/9s12K7K8MD2JzeRXplTVtPtbx\nggKHM2LEN4SHX0z6vhfYsPF6qqoy2zUGIYQQ4ghJulxIa82id15Dmc2M/9Vd2O12HA4H+/bta99A\nrFa47TZIS4O33oL8fLj0Uujbl9B587nuoUcYe9PtHNiyiVkP3suWn75r01mvKRGBKOCL3PbfqNpq\n9ad/vxfol/A8FRVprF13iXSxF0II4RaSdLnQ7rUr2bcphfOm3YgtJJSePXtitVqPNkptd1Yr3H67\nkXy9/z4EBsJ992HqHs2w737i1jvvJ6JXLD/OfJlPn/grJYdy2iSMKE8PRgb68mVesdueKIyMnELS\niG+wWPzYf+BVt8QghBDi7CZJl4vUVFayeNZMwmJ6MXjypQBYrVZiY2NJS0vD6c79ED084KabYM0a\nWLfOaDPx5pv4jx3LNcvWcVW/IeTt2cV7D/2G5Plf4HS6dr9EgKnhQeyurGF7RZXL791S3t7diIqc\nSlHRSmmiKoQQot1J0uUiqz75gIqSYi64YwYms/no+3a7nfLycnJy2mYWqdWGDzfaTGRmwpNPonbt\nIubvT3Dv4rWcX1DGurdeY84jD1GQsd+lw14aHohF0WbbArVUZOQVgJPcvPlujUMIIcTZp9mkSyn1\njlIqTym1rYnjNyiltiiltiqlVimlBh13bH/D+5uUUsmuDLwjyU3fw8bv5jPo/IuIios/4VhcXBxK\nqRM2wO4QwsLg4YchPR0+/xxTnz70+24h9yxYwtBPv+SHO29h1af/c9nG2cFWC2OD/PkytxinG5uW\n+vrGYrP159ChL90WgxBCiLNTS2a6ZgGTT3F8HzBWaz0AeAKY+bPj47XWiVrrYacXYsfmdNaz8K1X\n8Pb3Z9R1N5903MfHhx49erivrqs5FgtMnQo//QTbt2O6407is/O4/odlxNwzg1WXX8Sh7Y3m2612\nZUQgWTW1rC897JL7na7IyCsoL9/G4cN73BqHEEKIs0uzSZfWehlQdIrjq7TWRx5LWwN0c1FsncLm\nHxdwaO9uxt1yJ16+fo2eEx8fT15eHkVFTf4aO4aEBHjlFVRWFrz4IqF+/oxe8BP+Q4dycOrl6N27\nz+j2k0MD8DYpty8xRoRfCpg4dOgrt8ZxWvb8BNu/aHSzcyGEEB2bq2u6bgcWHPezBn5QSqUope46\n1YVKqbucX87fAAAgAElEQVSUUslKqeT8/M5R5FxRXMSKOe8TPSAR+7ljmjzvyAbYHW6JsSkBAXDf\nfXjs24dj3jzK+8TR9auvUX36wHnnwcyZRgPWVvK1mLkgNICv80qoc7pvidHTM4zg4PM4lDsPrTtR\n8lKaBR/fCJ/+Ct4cBwdWuTsiIYQQreCypEspNR4j6frTcW+P0loPAS4CZiilmsxMtNYztdbDtNbD\nwsLCXBVWm1ry/lvU19Vy/u2/RinV5HlBQUGEh4d33CXGpphMeFx2GYFr1vHulReTNvVyI9m6+26I\njITp02HBAmhF89ep4YEU1taxvLi8DQNvXmTkFVRXZ1JausGtcbTKwr+Dsx4mPw2VRTB7KlS1f+8z\nIYQQp8clSZdSaiDwFjBFa1145H2tdVbD1zzgC2CEK8brCPZv3kDaqmWMmHINQVFdmz3fbreTkZHB\n4cPurWc6HZ4+PnS/4EK+87NQs24drF8Pd94JP/4IF18M0dHw0EOwrfnarwkh/vhbTO26LVBjwkIv\nwGTy7jwF9RlrYOuncN5vYeSvYfqHUFdtLDUKIYToFM446VJKRQOfAzdprXcd976vUsp25HtgEuCa\nimw3q3XU8NPbrxEU1ZURV1zTomvi4+PRWrP7DOui3GXAxAupq6khddUyY0Ptl16C7GyYO9doQ/HC\nCzBgAAwdahwraHx7IU+TiYtDA/k2v5Sqevct7VksvoSHTSI371ucztPYnkhrqKlwfWCNcdbDgj+C\nf1cY9YDxXuRACE+AzR+1TwxCCCHOWEtaRswBVgPxSqlMpdTtSql7lFL3NJzyKBACvPqz1hARwAql\n1GZgHfCN1vq7NvgM7W7dl59SkpvDxNt/jcVqbdE1Xbp0wWazdZ66rp+J7N2HsB492fLTcX+Enp5G\no9WvvoKsLCPx0hp++1uIioJLLjF6gv2s/mtqRBAV9U5+Kixr509xosjIKdTVlVJQuKT1Fy//Dzyf\nYCzztbUtn0DOZjj/cfDwNd5TCgZNh4NrobAdNlUXQghxxlry9OJ1WusorbVVa91Na/221vp1rfXr\nDcfv0FoHNbSFONoaQmudrrUe1PDqp7X+V1t/mPZQmHWQdV9+Rt9R4+gxILHF1ymliI+PZ+/evdTW\nuqb3VXtSSjFw4mTy9u0lN72RVgvh4XD//bBhA2zZAg88ANu3Gxtwh4cbG2/Png2lpZwX6EeYh8Xt\nS4xBQedhtYa0/inG8kOw/HmoKYWtn7VNcEfUVsOif0JUIvS/6sRjA6aBMsGWj9s2BiGEEC4hHelb\nQWvNT2+/htXTk7E33d7q6+12O7W1taSnp7dBdG2v7+hxWDw82bKwmQnLAQPgmWdg3z5Yu9aY+dq8\nGW6+GcLDsUy9gkdWL2ZNRjblda7fcqilTCYLkRGXUVCwmNra0pZfuORpqK+BoBjY9EGbxQfAujeg\nLBMmPQGmn/3n6h8FPcfC5jlQ3Yr4hRBCuIUkXa2wc8USDm7fwujrb8E3MKjV18fExODp6dn5nmJs\n4OnjS/y5o9m5cimOqsrmL1AKRoyA556D/fth9WqYMQM2bGDaQ78l5YoJlF16mbEEWVjY7O3aQmTk\nFLR2kHfo65ZdkJ8GG96HYbfDyHuNZb9DW088p7oUPpwGCx+D4v2nH1xlkbGMGXsB9Gziwd/hd0BJ\nBvzHDvPug+xNpz+eEEKINiVJVwtVV1Sw5P23iIqLZ+DEUzXob5rFYukYG2CfgYETJ1NbXWUU1LeG\nyQQjR8Lzz8OBA+gVK/hi6jS8Nm44tgQ5dqxxfG/71SjZ/PrjU+vB7tRHSf1+ImXpn5/6goWPg9UH\nxv4RBlwDZg/Y+OGJ56x6GXZ/Dyv/D/4vET64GrI3tj64Fc9DdRmc/1jT5/S9FO5aYiw9bvkUZo6F\nmeNh4wfgaEFiLIQQot1I0tVCy/83i+qKcs6/Ywbq58s8rWC32zl8+DBZWVkujK79RMXFE9q9B1sW\nfn/6NzGZUOedR/qT/2bQ/74lb+kyYx/IoiL4/e8hNhb694e//hXWrWvT7utqz0IGbsolrNJGjmkf\n6/c/xLpv7RxccQ/1FT/bpPzAKkj7Bkb9DnxDwScY4i+CrZ9AncM4pyIPVr8C/abC77YZyVn2RqOh\naWs+R0kGrJ0JiddDZP9Tn9tlMEx5GX6fChc9A47D8NUMeDERynNb9fsQQgjRdiTpaoGstJ1s+ek7\nhlx0OeExvc7oXrGxsZhMpk77FKNSigETJ5ObvpvcfWc2I3UeDuqVYqjDm8tHXch7H35CTWqaMdsV\nGgpPPw1JSdC1K9xyC8yZ02QritPidMKiJ/D16k6/S5MZNXIp8Z6T0Gh2OX5k91cjjA7wO782Ctp/\nfBRsUcay4hGDb4LKQtjVUOe27Dmjf9b4v0FAVxj/F7jwSWOZ8cCKE8evq4GqJjr7L/qXsTw7/i8t\n/zzegZB0N8xYCzd8BhW5bV9zJoQQosUk6WpGfV0dC996Bb+QUM695vozvp+3tzcxMTGdNukCSBg9\nHovVg60/ncFsF5C9dhXX7FxHUn01m81e/KmwhviMEqb1G87cV9+kNicH3n8fxo2D+fPh+uuNZcgR\nI+CRR2DFilZ1wz/JznlwaAuMexjMVqy27nQ77zWSLk4jyn8chyJ9qMtcYyRez/SCzPUw/q/g4XPs\nHr0nGInYxg+MxCr5HRhyE4TGHjsn4XLwDDBqwY439w54pie8PwVSZsHhhrq2Q1uNJxKT7oaA09jK\nVCmIuwB6nGfEpd235ZIQQohjJOlqxsYF8yjI2M+EX92Fh7dP8xe0QHx8PIWFhRS4ctamHXn5+dHn\nnFHsXLGY2urq07pHTk4Ou3bt4qr+dj67cBQ7xw7iyWAP+tfXsNrkxYzcw/TdmM7Nkb349h//oi4n\nx3gS8rHHwGqFJ5+E0aONGbGrroI334SMjJYH4KyHxU9CmN2ozfqZrnG/oV7VkTvtcbhxLtgvgYQr\njOU+oL6+hoqKNDCZjX5Ze36Eb35v/Dz2TyfezOoNA6fBjnnH+nplpRhJX8+xUHIQvr4fnouD2Vca\nBfHegTDqwdP63R41+CYoSocDK8/sPkIIIVxCkq5TKCvIY+WnH9Jr6Ahih5/jsvvGx8cDnWgD7EYM\nnDgZR1UVqatbWVDfYNmyZXh6epKUlASAj4cHtw1KYP7k0Ww9rz9/tZno6axlocmL2zLL6LNkI1cW\n1/D6pVdS9ONCY5nx00/hmmuMuq+77oIePSAhwegR9t13UHmKQvItn0BBmrF8ZzKfdNjfPxE/33iy\nDn0KsefDVW/CtPeOnrtn71OsW38ZVVUHIfFG0E7Ys9CYnfLvcvJ4Q2422kxs/dT4edG/wDsYrp0N\n96XA3cuNLX6K9ho1YGP/ZCReZyJhCnj6G7NdQggh3E6SrlNY9O5MACbees8pN7RurcDAQCIjIztt\n6wiALvF9CekWzdbTKKjPy8tj586dJCUl4eXlddLxQG8v7hs2kB8vGs3GEfE8bFP0dTpIMXnxWGkd\n/VfvYMyabTwa2YNtTzxpzHBt327UgnXvDq+/DhddBIGBxmzY3/4GCxceS8LqHLDkKYgaBH0vbzRG\npRRduk6nvHwrZeUn7l5VXZ1DVtbHaF1PdvbHxlJi95HGEuJ5v2v8Q0cNNBqcbnjfKMjf+5OxpY+n\nzVgOjBpoPKX4201w/2ZIuqfx+7SGhw8MuNro4/XGWCPRO7i+TR9MEEII0TRJupqwZ/0a9iav4Zyr\nrsM/LNzl97fb7Rw8eJCKinbav8/FlFIMmHAhOXvSyNvfumavy5Ytw8PDg5EjRzZ7boTNj/uHDeKb\nyaNJGzeYVyJ8maSrKVBmZtZaOX9nFgnfr2Z6ZhGvj72AQ5/NNZ6C/O47Y8bL4TAK8i+4wEjCRo2C\nO6dCyl4Y+Qcj4WlCZMQUTCZPI7E6zv4DrwNO/P0HkZ3zKU5nLVz1Fty2wHiisSlDboLcbfDlr8Ev\nwuix9XNKGU1XXZXkX/APmPAIWLxg+XPw9vmw+BexOYQQQnQ6knQ1wlFdxaJ33yCkWzRDL7miTcaw\n2+0A7Nq1q5kzO66EMeMxW61sXdTy2a6CggK2b9/O8OHD8fFpXY2cl9XCVQlxzDr/PHZMPpf5fSK4\n1eIgQtezsmEWbPD63QxdksKdFhvLb72dmmXLoLgYFiyABx+EWge8/y18UAnDroJzz4W//MVI0n62\nR6TVGkB4+MUcOjSP+npjlqy6Opvs7E+IirqanjH34XAUkF+wEAK7Q0S/U3+A/leDxdsouB/9hxML\n8tuKpw3G/AFu/x4e2gt9JsP6N6G2qu3HFkIIcQJJuhqx+rM5lBfmc8Gdv8FssbTJGBEREQQEBHTq\nui5vmz99ks5j5/Il1Na0rKB++fLlmM1mzjnnzGvkhnWN4qnRI1h80WjSxgzkjS42rlTVWLTmG7y4\ne3cOTz39NG/8738s0JodN99Mxb9vgj/aYNZz8Ic/GE/2PfOMsRwZHGz0B7v7bqNL/u7ddI26lvr6\nCnJzvwFg/4E3ACcxPe4lJGQMXp5dyM6a07KAvQNh0LUQ3AuG3nLGn7/VfILhnBlGx/ztX7T/+EII\ncZZrm4yiE8s/sI+Ub75kwIRJdLUntNk4SinsdjspKSk4HA48PDzabKy2NHDiZHauWMKuNSvpN3bi\nKc8tKipiy5YtJCUl4efn59I4fDw8mBLfmynxvQF4LyOXP+3NIWz0eDwz0klJSWHt2rUABPnOoKtv\nD7pefi7d7r2XSD8/rBs3wsqVsGoVfPwxzDTq+QJCQxncV3F40OPUTDGT6/iIqF5X4+3dFYAuXa4l\nfd9/qazcj49PTPOBXvwfcNaBxdOln7/FYkZDSKzRoiLxzFugCCGEaDlJuo6jnU5+fOsVvHz9GH39\nr9p8vPj4eNauXcvevXvp27dvm4/XFrr27UdQl25sWfhds0nXypUrMZlMnHvuuW0e1zVdw3jqQB6b\ngqJ5c8IY6urqyFn4GhlrviCz6zVkZGSwbZtRIL+2Vz+6du3KW488YlzsdMLOnbBqFWrVKmxLFxC8\nfDu8fBVjTKDtc2FENgwfTtdBseyvVWRlf0Rc7J+bD8xsMV7uohQM/RX88Ddjf8iB04xieyGEEG1O\nkq7jbF38Azm7Upl87wN42/zbfLwePXrg5eVFampqp026lFIMnHghS2e/TUHGfkKjYxo9r7S0lI0b\nNzJ06FD8/dv+d+tjNnF9VAhvZOaRXe2gi1XRfecbdI/uBrf+GoDy8nLW7T/IG/k1bEKTll9IfFiI\nsU9kv37G6847obaE5fOHY9tRTtfsOML22YxmrbNm4QGMtZo43PsJ9Lh9qBEjYfhw6NsXzCe3ougQ\nht5q9O/asxA+vxOizzG65wshhGhTUtPVoLK0hOUfzqJbQn8SxkxolzHNZjNxcXHs2rWL+vr6dhmz\nLSSMmYDZYmHLKQrqV640GnSed9557RUWt3QNwalhdnYhbP0MSg+e0HDUZrPxg4cNi0mhUTy/tfEW\nHlZrINV+Q8lPsvFez1G8OXUqX86cSeqCBfDJJ9Tccy21Xk70B7PhtttgwAAICDCK9O+9F954w2js\neqq+Ye3J0w8u/S/c8rVR05Yyy90RCSHEWUFmuhos/eAdHNXVnH/7DJf25GqO3W5n69atHDx4kJiY\nmHYb15V8/AOIHXEuO5YtYvT1v8LqcWK9Unl5OSkpKQwaNIjAwDNs+NkKPbw9uSDEn9nZhfxuy8t4\nhvcztsdpkO+o5aNDRUyLDGbzvgP8YPakvKYGm+eJ8R8+fJiUlDiioweTkDCA/Px8du3ezabKSu68\n8066XH0VG1dPpK62nLDiGAJ3afxSy/BKzcPy4WzUa68ZNzKZIC4OEhNh0KBjX6OiXNciojWCYiBu\nkpF0jXkILJ2zrlAIIToLSbqAjG1b2LFsEUlTryWkW/d2HTs2Nhaz2UxaWlqnTbrAKKhPW7WM3WtW\nnjRTuGrVKpxOJ6NHj273uG7rFsoPm9P5miiuHnXtCcnNW5kFOJyae6PDSamv5rd5lby+aScPJSWe\ncI9169ZRXW3mggtuIywsDIDq6mqef/551q1bx9SpU0lIeJaMg+9Q5p1BblAG9cMOGxfrMLxygwk6\n4EPgfgu2vTV4rVyI9eNjvb90WBgqMdGYIUtIMJY1+/Y1Zsva2og74cOr4ZObIXKA0foioBsERBtf\nrSc3rxVCCHF6zvqkq662loVvv0pARCRJV05r9/E9PT3p2bMnqampTJo0qV1n2Vype78BBEZGseWn\n705Iug4fPkxycjIDBgwgOPgUjUPbyJhAP2IdebwTPZ2r+x3ruVZeV8+7WflcEhZAbx8vevaN5R8Z\na5hT7eT3Ticmk7Hy7nA4WLduHfHx8UcTLgAvLy8SExNJSUnhggsuIDBwGIGBwwDQWlNbW0hVVQaV\nVRlU9cqgKvEA2VUZVFVl4HDUY6nwwy/dgd9eB7Y91fjuWY7vkp+w1B7rFl8bHobq1x9LYqKRiCUk\nGC9XJmO9J0LiDZC+BHZ/b2xndDzfcGNvyslPMm/vPPIr8xnTbQxxQXEUFe3BavHGz9al0/69FUKI\n9nTWJ13J8+ZSnJ3JlQ8/ftKyWHux2+3Mnz+f/Px8wsNd3/2+PRgF9ZNZ9uG7FGYePDpjuHr1ampr\na90yywVgyljFrw7M4W9x97PxsIPB/sZf+fezCymrc/Kb6AjjPJOJawI8ea3GzII9+7mkTy8ANmzY\nQFVVFaNGjTrp3iNGjGDdunUkJyczbty4o+8rpfDwCMXDI5SAgCEnXVdfX0V1dQ7Vo7Kprs5i38G1\nFO3/Hg9bDWWfJ+K1N5vAwiKCyyoI27KJsDVrUFXHmpnWRQbh7NOf0uAgwi64EPr0MV7duhlLmK36\nBZngilcbAquFsmyj9q3kIJRmQsYqWPMKe2PH8NeVfwXgnW3v8MrgB/nVmr9TrxReykKIbwTju4/n\n9gG38862d4jyjWJ6/HSsZmvr4hFCiF+wszrpKj6UzZovPqbPyFH0TBzqtjj69OkDGBtgd9akC6Df\n2Ims+Gg2Wxd9x7ib76SyspJ169bRr1+/E2aJ2tWK/3Jt+S6eMivezcpnsH8PapxOZh7MY3SQH4n+\nx7rC35eYwNsrt/FqehaX9OlFfX09q1evJjo6mu7dT152Dg0NJTY2luTkZEaNGoWlhY10zWZvfH17\n4etrJHbvvfkNtoIIEqYewHx3OJcO+xRHVSVZaTuY/fTjjLvxNob2S6Rm43IOfv97/PbX4bE9jcDc\nQvhy3rEbe3lBbCz06UN1D3+y/TbSbfw/8eg3AsLCmq8bM1shqIfxOqKyCP7bj1nrn8PL7MVTo5/i\ngSUPcP+6f+Kp4ddOfwqqC0gNj+KDnR+wo3AHG/I2AGA1WZlun96i34kQQpwNztqkS2vNT2+/htli\nYfwtd7o1Fn9/f7p27UpaWhpjxoxxayxnwicgkNjhI9m+dBGjpt/C2rVrcTgc7vtMOZthz0JsEx/l\nmogQ5uQU8mjvrnxfUEquo46X+kaccHqwjzfjcfCj1ZfdBUVUZh2ktLSUiy++uMkhkpKS+PDDD9mx\nYwcDBw5sdYj7s9Kw7CykcmBPcp1FeJYsot5Zi6ePL70GD6erPYEN33/D4EumcKB+DpnBwcZG22vC\nyNs0jMSBQ5g4aiLs2nXstX07nvN20atOwxOXGQMFBBizYXFxRmLWs6fx6tULunRpur2FTzB5A6Yy\nv2gZV8dOZaIpkL7WIHbWFnOLXyy/GvZ7eO9SKuJ7MtG8jQ15G7gy7kp2Fe3iw50fMi1+GiYlD0kL\nIQS0sGWEUuodpVSeUmpbE8eVUupFpdQepdQWpdSQ447dopTa3fByw94njUtbvZwDWzZy3rU34xcc\n4u5wiI+PJysri7KyMneHckYGTpxMdUU5O1YtY+3atdjtdiIiIpq/sC2seAE8bDDsdm7tGkqNUzM7\nu4BXM/IY6OfN6KCTu+I/0D8Wp1L8d0saK1euJCwsjLi4uCaH6N27NyEhIUe73bfW3I9fRGm4fPoM\nQiOvJdBcy9K0l48eH3LxFMryc9mdvJjs7I+JCL+M+vIuhA0oYcDE89myYwvlA/rDXXfBc8/BvHmU\nr/+Cxd/GsObDOLY+E4vz+WfhhhuMxGvFCnjiCbj1Vhg3DqKjwdvbSMguvBB+/WtjW6TPPoOUFCgu\n5sOgEJzAzdWgvriLOzJ3EVjv5MbRj0HMKIgciN/y/3BlUR5Ka27pcTHX972e/WX7Gf7BcFZlraLc\nUc4d39/BprxNp/V7EkKIX4KWznTNAl4G3m/i+EVAXMMrCXgNSFJKBQN/B4YBGkhRSs3TWhefSdBn\nqqbyMEvee5OIXrEkXtj0LEZ7stvtLFq0iLS0NIYPH+7ucE5bdP+BBEREsnzJYqqxum+Wq3Av7PgS\nzv0teAcSD4wO8uO/+3NxaM3MfjGNFn8nRkXQd9MuFpishOTnc9WUKUeL6htjMpkYMWIECxYsIDMz\nk27durU4xOKyAhwp+6jvHUDfXkOIrUvg65x3qcr+EBKMfmKxw0ZiCw0jbevL+PY8TJDvFFat3ECv\nybX0mhDGtsWajd/PZ8xxOyhkZLyFycOP3hc8z5atdxMU34VuXf9wbGCHAzIyID0d9u079nXfPkhO\nhqKiE+K8w8fMtFBPuvo8AzbNpPOuZVLXC2FPBTgOwvVzoWg3vy3L4LJv7qfXzu+InvBXyhxlvLPt\nHd7c+iZjuo1h7aG1qE2KNye92eLfUWv934b/Y1nmMj6+9GMsprN2Il8I0UEprXXLTlQqBpivte7f\nyLE3gCVa6zkNP6cB4468tNZ3N3ZeU4YNG6aTk5Nb/CFao76ujrd/8zvKi/fTO+k+fAJa/o9kW9Ja\nsyFrPrquDt9a1z+mr0wQ0a8rZs+2L2wuzDxITmEh/p4exPt7N32isx4ObYE6x2mPZbUoxg7yw9P6\ns8SoYBfkp8HvtoAtEoBv80q4bft+wmsq+deulUenebMrssmtzD166f4QO/MTL+eC1GSmOYowNZKc\nlTvKyTmcQ1xgHE5gc0klHiaFt/nUk8c1dTVU1hlNUnVtPZZqJ6EJfQgNigLgMJ/TLXgtuWXdARPa\nojE5qgn2LKSi0pfdS3tjKawm/vYMrBYzqjCMwyXFxA4ficlsBq3Jy/+Obt1uIi72r6xPvoL6+kpG\nJn2PUibWfvkpBRn7sXh4MPr6X+Hjf/KTkLv3p/Dt4lcIzCrCIyMLnZ7OZdVdse3eDuVA1c+ecDSZ\njF5j0dGgs8FaBFc8Aj1jme/YzLN5H1MXHEi104HD6eDSXpdyY8KNzNk5B4fz2J/92G5juaTXJUd/\ndmonr256lckxk9lVvIuSmhJ2Fu0k0jeS4upiyhzHZoUnRE+goLKAf6//NwDPjX2OC2MuPOWfhRBC\nuIpSKkVrPay581z1v4JdgYPH/ZzZ8F5T759EKXUXcBdAdHS0i8JqjMZRVYW3VxylBd5UlHSc5Tzf\n0hDK/PIpN59+EtIUrcxU7dqHd4hrN5pudCwUHkrhU3yI3IK6pk+sKYeKXDBZgda3HNBASbUF//pc\nRnavOPmEsQ8dTbgA+hVlE7tvB8Oy95JfYPy1dGpNVnkmCjCZjLqm7ofWExg7ho2R0Yxdsg5TI6Hl\nVuZRVVvFfp9qfKze2Dx9qfDwpbaZmOucdUDD5zVBfYAZR5UmuyrbOEENxGbdg5+12PiNaEWtr4Oa\nSjMZKUHUVleTmQD7D/twrlcBEcEeeKoKCvPX4+njC4CfbzzR3W9DKUV099vZvuMBCguXog/HsGLO\ne/gFBVNRUoxPQCCjrzt5xf8/e94k2bqFyH6R0C+CIeEXcf05j8Hc28B+KcRcCAcPHntlZBz7Pt0J\nB8th+R8BuLThVWdW1EWEkelXT4bfq6QGv0OUv6IuMpziIC8O+NXySsBPjL11NH5exjZRK7JW8MaW\nN1iTs4bN+ZtPirO7rTsmZaKkpoQF+xYAYFImnNrJ+zve7zBJl9aa0txDBEZGuTsUIYSbdZj5d631\nTGAmGDNdbTWO2WLlyscfwvbOWPb4pTL4jwvaaqhWqT10iD3jbiPswQcJvcv1hf1zf/0B+bXB3HT3\nCHy7hLr8/qflnclQXgT3bWh9q4MGnz/9GBv27GLoP9/B6nnqGcKt389n+qYU7n7tPaxexrmfpH3C\n3DVPMPui2SSGH2uKWrHpR2YXh+OYcRv39hl5wn0OlB3g0i8uBWBIeCTvXTSzRbEuPbiU3yz6Dc+O\neZbJPSef4kxj4+yqqir++9//Eh8fz+VXXQVTj51RWVvJhXMvJDEskXM2enKotJRbX3j9aOJ4RHj4\nRezZ+28yDr5N3pphWDw9ufm5V/hx5kts/vFbkq64Bg/vY09wppekszJrJTMSZ3DPoHtODOuaWce+\nP9IzDGOjeJQ6ulyrZ55P/v4C9JCHCTd7oLKysGRnY8nJITY7G789m/DcVUhQRT2Qe8IQdfcF4ggP\nozzURr0lj0cCLOQH5tHH30KRvxlLRBdSrUWU+nvyzU3zUSYTm/M3c+O3NwKw4MoFLM1cypNrn2Rj\n3kb+n733jo+qTPv/36dNn0x6SIEEEiD0JiBNUZCiIoLYe131say6q+vuqru6tlXXurrq6rqKixVs\ngKAgndB7CSGE9J5Mps+c9vtjYhAFQQH3eb4/PnnNa0657+u+z5mTcz7nqgPTBv7Xc4ht+GIOS2e+\nSf9xkxh/w60IP/NaP4mTOIn/+zhepKsa+G5MfU77tmriJsbvbl9ynMb82cjKK6So4CZO3fcCmxbO\nZNCEK/7bU8K/eDEA7nEnpu7jiCsGMeftWope+opxj116Qsb4SajfCRWr4ayHfzbhAhh2/oW8/9B9\nbFu8kMGTzztsu0BrCyVrVjJo0rkdhMs0TWbtnkWv5F4MSBtwUPsH+4xh1tI1/L3Sx609Dpb13u73\nkEWZq3pfxZvb32Rzw+aDCNvhMHPXTNId6YzLHXdUx2a32xkyZAhFRUWMGzfuoBJKDsXBZYWX8fKW\nl0IiX6wAACAASURBVLnw9IdY9/pblG5YS/ehIw6SIYoKnXOuZm/pk+zf2Uif06Zid7kZOuUCStas\nZOviBZxyzjRUQ2VH0w5e3PkFmnMMumcyf69o4IKMJDodwiQd9Lby/p/vJ9DchBqN0OPU0Uy5K04W\n96ZO4bNFX0HpO5x10+30n3bbQX1Dbfu4cfGd/G3E43SPuqG2Fmpq+LroHfbtWkmPiBN7Qws5zTqj\nygUsLd91Af2O4vxOG6SnMyA9nZWJCZhpaXi2/Y0LUhLZVx7h9S3TcGTn8cQFbyJnZMYDBr4HTVWp\nK91DqM2Lv6kJNRKmzxnjcSenYhoGC197CYvNxhnX3HRUv9l3UbphDRvnfUbF9riWbuuiL9E1lYrt\nW5nxx0fwNdST0jkXd8qBl6DVH80i0NrM+BuOvhyZpqps/Tr+8iiIImokQm1JMcOmzsCVnMLWRQvY\nuWwRvUaPZfQlV/3k4ziJkziJ44fjRbo+A24TBOE94o70baZp1gqCsAB4TBCEpPZ2E4D7j9OYx4Qh\nl/yR/U98QuaqhwiOOBen+5erCXgoBBYtxpKXh6VbtxMiP2tUH7L/s5GSxlSGVTTg7vJfzge24V8g\nWeLZ0I8BOYV9yC7szfrP5zDgrMlI8qF91rZ+/SWGrjNgwgGfobV1a9nr3cvDIx/+wQPOrdiYkBBg\nXrAzsyu2Mb1LPwCCapA5e+cwMW8iv+r/Kz7a8xFv7XiL59Kf+9F57m3dS1FtEXcOvhNFPHq/ulNP\nPZU1a9ZQVFTEpEkHa8cuKbyEN7e/yULLJnLTMtjwxScUnHIqVf4qOlnT2L1yGaE2L6FADLOTROcz\nKnBlLmB10adompcBNzbT4HsIVZ3MGzvf4sUt/6I5+wVIsfJIWSvQynZ/iFf65P1gXpsXzqW1tprB\nk6bQ1ljPnqIVNFbsJ61LHhu31JBg1bBaRNZ/Ppvuw0YQC4dJkIIISXnkOrvwZMpddEvtCbICubmw\n8nnGnz2ct7tXcbslAjh5Y8zTdO82EVQVmpqgoeGwn4SGBijbAp8vxBIO84eOmZbDb/Lji3Y7pKR0\nfMzkZKqqK6jzNhOxWIhYFMJWC/vnv0tgYk+6lLnZsW4Npiiycf5nXPf8a9hdCUSCAUJtXjK79/zB\ndWOaJvNefJrq4p34mxo7tk+8+U5Wf/weO5YuAmDei09Tv28vADanC9lqxeZ00VRZDkDXgadQMPRg\nDev3YZomxauXM/f5vx5y/951qw9aXzPnA0rWrmbGHx/BnfwztN2mCREvLHkSbB7ofxFY3RD2QlqP\nI/c/iZM4iaMjXYIgzCKusUoVBKGKeESiAmCa5j+AecDZwF4gBFzbvq9FEIRHgHXtoh42TfPg0Kj/\nEhSLlfDEp8mbfxFF7/6eU29++b82F93vJ7h2LclXXXlCTSEjrhnKR/+sYvVLXzPhr5edsHGOiFgQ\ntrwHvaeC89hNncPOv5A5T/yZXSuW0nfs+B/s17W4JqDrwCEkdcrq2D5r9ywSrYlM7jr5kHIf7TuG\nL1dv54nShg7S9eneTwmqQS4vvByH4uCSwkt4fevrlLWV0dXT9bBzfHf3u1glKxd0v+AnHZvH46FP\nnz5s3LiRjIwMQqEQgUCAQCCAy+ViWsE0Piz5kGfH3c2G995nzoq3eWjf0/yRK6matwwAxWojY3Au\nqYUBLLYEFLkzsuLB11hDIHEZm1c8y/uNC0nLvIJm0crMvl0Y4HHzUnkD/6xu5HfhKLn2A9UaNFVl\ny1fz6TZ4KGdccxPhgJ+37r2MVYt+hdWWRNVuP67czgzTFjO3WuTlG+LX2pmdShl08a3sCHfnq9de\nIuz3MeSc8yHQCIv/AnqMiwSBcOEYkqs2MnTzbGitjfuRZWbGP0eDljp4tD9GW5BZkouGiIA1CL2k\nbIZZumOWV+PbvgW7ppMWDNE5piJ9N6BoBfDGF0D8LTGiyHFS9lVvvFYLUUUmqihYR44hpU/feCqO\nxERITGTDyiU0rC/CsCjIisKZ//NrFJudnqeOJjU/B7WplU2fzaJkV5xwde7dDwSByh1bCbQ0AyBb\nrXz69F8QBJHh0y6k37iJzH78T5x57c2IFivvP3APmT0KsdjslG/d1DFtm9OFGosy8sLLMTSNlR/M\n7Bhj+LSLWf7hu9Tv2cVrt1yDIIgMPmcqoy68HMVmY5s/RIZFwaNIWENNsOJZtJZK3lkWo6U1hCga\njEypoMDdjCQYOOUYsUXP4JTbvRhH3QndJ0LeKCBOCHcHI3R32PikoZVBCQ7yHTaiRjwIw/oTtNum\naRINBbE5j+yPapomVa1hKltCjCxI7dj23zYxn8RJfIujjl78JXEioxe/j7XPX8bglvlUXvQlXfsM\n/0XG/D7a5s6l5p7fkPufd3EM/mHZmOOJz26fSXU0jcvu64sn/5AxDSceG9+Gz26Ha+dD7shjFmea\nJu/cdwe6qnLNMy//wGdm98qlzH3hKab97iG6DYqn46gJ1DB59mSu7XMtvx7y68PKPn/lpxRFO/Nx\n3yRGpOUy9ZOpJFgSePecdwFoDjcz4aMJTMmfwp9G/umQMtqibYz/cDxndzubP4/8808+vrq6Ol59\n9VW+/V9VFAWbzYbf72fSBZO4edPNXJ5/MfY3NlOfEuPT3nu5dFlXCrr1Y9p9DyFbLIeUa+gaC+cO\nRtfgPp+JVPBvujrcfDwgh0iklvJALRN22inQauiilTMt9BGRPck07hZRI2Fm/OEv5PaPm1UXLxiL\nIVciCLBnzUheaT2bVa572SMOwxx0Jbu+eIeQr40ZvWr5vGEoTfVNAIzsn8zw1ErE2o3xENvMAXDj\nN/Dh1bDz0/hEB1wG01758ZNU/CV8eisMuhISsmH+b+OyfLXsSc3lHq2KKouF88KZJC5RMNpve26L\nxvQHnkSRnWytXME/v3yM8zakY41EMYUwNZ4mOrVC30AyyYKFWFUVSiSCNaZiUzUkw/jRaZmKgs9m\n4nWI+B0SUZuAbpGw+Ty4uudgHTAAiyuJzRtX0WSGGDnlIhq8CruXfEbEBFWRickS+mGS1wqiyLjr\nbqHHiNHYXe6DxzaMjv+FmGbQ44/zme77kuzmso42FpeHvIef5cY9NQf1HbNmIesGjCZiO+Dvd+EX\n/yKvqhSAqk65bO85CNPjYHtWbyzRCFZTxW9zkx5tpsH647kPX0q1cmdTFKsWQ45FSbDbqRJkPG0t\ntHmSubVmFwPry7A5XWxbvBCA8l7n8Fnk4CCrXQ9PwqaIbKxopbguwO/nbCNfqOZ2eQ7bjK58Lo6j\noT0afFheMm9fPwybcphEwIeBbpiounFQv+8TOVU3CEQ0kpwH/td8EZW/LdzD4t0NVLTEI5Yn9+2E\nXZEQBIE+WQlM6tuJ2rYw3TPcNPmjdEtz4Y+oGCZoukGK679Tmu4kfjqONnrx//eky9tUh/nSUOrl\nbHrcvzIedv8Lo/ruewgWFdF9+TKEEzx+05ZSPnh5H93cDUx6+thMez8br40FNQy3Fh25NM1R4lti\ndd7dv6f78IOJ3KwH7yXkbeW6517teAg9u+FZ3trxFl9O/5JM1+E1KLvb6hm7oYLecjWP5Kdx89c3\n88SYJw5KbfDI6keYs3cOCy5YQJrjQLmjkBqi0l/JxyUfM2v3LD4+72N6JP08M0xzc1wL4nK5sFqt\naJrGCy+8QGJiIsUFxSypXMI9kWlULlxBRX+ZLls1+t10GRPG/bhGc903f8Znvs0y7wheTfoNt8ae\nZZSyomP/v7mORUxEF2RmaO8xVfsSqf5mMvN7Ujh6LIIg4PNtY9368+nW7T7KK9+itNnOgv3jGNNS\nwu3ibMgZyr7i/cypKOyQ29dTx/a2eGTpuX1C9Bx7NiR3hZSCOFmKBaFlH6x7I26Kzh0FV30aL1X0\nXZgmVK6Nk/im4rjJ2poQL2V0/ddgaCBb4N0Lebx5HW3bu5PWZqVvP4PNfoNrxc2kW8O8MvAcXm7b\nRpI1ibnT5+K2uDFNk7+u+yszd8U1RqdknMKU9AnsatxBpLoJ59JqhJiEKSpktDRi03QMBFpPn0J5\nSxs9In481UtRwzpJvkpcYYOEkIY7ZOAO6rjDOvbY0d1/NVEgpijEZAm/Q8BrTcCtatQldkFNzcSr\n2BHcbrrnZ/LOjlYsHjeq3UF9ZyeNaYnYhChVnkxCNjtjAhvIiu1ktu08ynN7YP4ErZMtFCSzqZqy\nLkd/HXvammnzHFsC6lvefhJXyA/Ae1kzKFSqGBHbwpWe5biF8I/23RLKYWlzATvoxs6c03j32iHY\nktNx2WQcFpkvt9cyf3sdxXV+Tu+RRnMgQqrbzg1jujJ3ay1/+XQHPVSJgW4H3VDw14cosmkU2Q4d\nmT2wcyKbK73HdLzfwiKJzDglB4ci8c8VZVwzMo8Hzu2NdKiQ6pP4r+Ik6foJWPfJSwzd/AfW9n2I\nYTPu/sXGBTBjMfaMHIV74gSyHn30Fxlz7q9nUh5K59K7epLUK/fIHY4nqjfC62fA5L/C8F8dN7GG\nofOvu27G6nBx+WN/63gLrS8rZebv7mTsVTfETVlARIsw/qPxDM0YyrNnPHtE2Wcu+4SdWjZjIq/T\nFChh4QULOwo5t0VVPt1XzF+2PUsPZwYDPSKV/koq/BU0hZs6ZIzNGcuL4148bscLsGbNGubPn8+4\nC8Zx68ZbSTU9TFroQdYFQg6DyouzubT3ZVT4K9jv20+5r5wqfxVX97may3vFCfeOuk3sWno5/0i6\njyopj8cq/0y0WWP0hbcRbROZ99zrjL74Np7J6MOGNi/PaFcwpPfjpKdPYcGG/9DUsgGHuQmH1MDv\nVjzC0IwiLi2cDcAHO6bxh9g6uqR6MJO6ssNyGoK/hqS0VLL6DcNwZvDW/b9BVhSufPKFQ5uA/HXw\n7oXxfG5Db4TEzjD8ZpDbNQArn4evHgQgPOoPtGyYh1dzYvSaSlWNn0H2M/GM7IK9MJFNm5aw+K/P\n0jwyjcWpewhqPi6KSSwXo9TKMiNDYR67cB4pqQcTis0Nm3lg5QPs9+3v2GYIDiLZjxAU476Raa0N\nGCY0J/+Ir6RpILa04W54gyyrnzaHnQgpjK/9hi4BP1stfQnrHpK8W3FGVKxaOplN1ThDBggaVj0D\nm56NMxTCFQ6S6N2FI2DDGQvgjGk4IxqScfT3c0MQCFttRCwWREPDlCAqKXjdHqoyOhMWLESCAr26\nZ7FfUdhttxCy2QnbbB39EgMBhotRvhBSiBmQ3lhFU7ds+pasR1ZjBJwuXEEfYZsdTZZxhQJsyRtE\nQ+dcBm9bSfYpg1nREiO5vooJWXs427eSvynTeXb0HT+Y79QF/0GVFbqX7cLSntsvQYlwSe4WnHKM\nvf5UasJuorpMl5GTmTc/bnqtT+nE3q69GbhjDc5wsENegzWNtalDqE3MJhJU+FX5G1jMuLlUsvQB\n0YkoJiPI6WDGEKQMMKMgKJhGAEMtQ40U0ezMZYi1HFNLYljyHjpZ9iAR5rXIJHoU9mSEsZXKgAu9\n57l0PeN8RG85DWYSv/+smLqARnlLCFU3sSkigzonIUsCiQToZvXxZomdkGqgf+93Hd8rnb7ZHmKa\ngdMqc+vY/JMm1P8yTpKunwDTMNj5xGnkxPah3bKWlIxfLmFqYOVKKq+/gZyX/477zBMTufh9tO4q\nZ9azxeQ6GjjnuV84cvOz22Hrh3DPbrAf3+CFrYu+5KvXXjrI7LXgH8+ze9UyfvXyv7G54j4hc0rm\n8OCqB3lz4psM7XTk7P/LG/Zx4XYvtuBS+ltTMYSBVMZUWgQT1SrybSIvwQjRo+UxurnT6JLQhc7u\nznR2d6aLuwsFSQU/yYH+aKCqKk8//zyJmVlsyVjGyuqVXF4zDGVzPcoZhbxuX9DRNtGaSG5CLm3R\nNloiLSycsRCn4uRPq/7EJ+XrqOv0KL/N68QVZoCZ9/+a0ZdcRVNlOfs2ruNX//g3W6IGUzaWcJ3y\nBecpKwjbfoXR/BuiugVvLIOKyDmY9nPJS7FRmFqF2vwUtd4W3t4xnX/e+CuSXM5DHsP2JV+z4JXn\nmPa7h1DSu7A/YFIf0BgoNbB+znt0HzaSIWdPhddOj9fSBJj8V3wDrqNi82L6fnUFqyND2VSXQDjw\nba42ExDIchQwJuMC9CwvG3v9m28+yyCruYJZZ3nRxTYE4ve+NGQuaWlihj9A8sArYcRtBzmGm6ZO\nczTCVYsfRAtto6unK56Ma3i72c5IpZrV0WRM8UBk5NBYKbv9ixCMAB6fSlXaXZgJhzbxfgtFV1Hb\nibwzvJOgPZ6OIzPaQKOShHaIa0cwwpiiHUt4EzH7IDBNHJEIznAQRziMIxImqWk+ia2rUeiGVXPg\niESQxN44g3Uk+IpxBatwhSJYVZ3ckIodF50duchhFc0XwBaLQCgEwSBEoz96DD8GUwRkCMs2fLID\ntxzBqURAFuKexQoHltu/TVkABZanDGFZ2lCiigVVUYgqChmN1chqlJbEFDIbKnGEAzhDfrxuD5ok\n4Qz7WTZsPJv7DCOmKB19Y7JCoq+FZG8TpXkHNK/pTTXkVpXid3nYXRCvoeoIBzhv4XtkNFZj0Y6U\nge/bH8WKIHowdS/w0/Mt9nA3kmn3UxZMIsvuJ8/ZSpbdhzHuIaIN+5i/cj/zI33Y4e5HrZCIiEFK\nrIVGS2qH1eC5CwcwopOH8mAITRPok5uIiYmqGbjsFuyWuDUlqunsbwqR6rIQC7aR1LAaW0oueHLA\nngTiL2/1+b+Mk6TrJ6J890YyZ41nS+J4ht71wS82bt3Dj+CdPZseq1chHiKk/URh/t3vUhZI56Lb\n8kntf2IiJn+ASBs8Uwh9p8PUvx938Zqq8sbt15OcncOFDzxG2O/jtVuuofdpZ3LWTfG0BaZpctEX\nF6EZGrPPm33It8O6tghbq7zsrvNTXOenuN5PcbdaVE/7TdowscUMUhDJtVjo7bZjkwRe8rUxypD5\neNwPijYcd6xs9fP7kmr2BsOYhsljyQH+XfIQfx/xLLVfFTHswospallPhiOD3IRcPNZ45vntTdu5\ndO6l3DXkLi7ofgHjPxxPYpf72G10Z8OI3qRbFT5+7EH2b9kIwKDJUzjzmrhGcvqmvZQEvDylXo6q\nudEMnUlnrsJu+eF129DwJdu2/0/8fBpXc/n4Bzv2RQ2Dhfv3saQetvuCyMVrOH3l50iY7HQVsih1\nLHe2fozR1ohssXDDi2/gtIkQboU5N4O3gjuSX+GhsssRYhpvlQ1FyMynObmAoYNqcNo/pHZtCv29\n95BIKk29/4O382KUfafwmH8Kmwf2RapqQ2nejd39Kf1tU3kwzULvsn8h1G6J1+sceh1G/TZWZOzE\nK1mY73yIOaECvh7SnS/r9vF0tU5vuRGjSKYx5XdEPKPRLN2xhldhDW8iVdN5KpJJnxsW8N6GSlps\nIlf1yWJ2Qys7AxE+rm1BCeuEHQc/2DySRJuuH/Z3f3HXo5wf2MjNebczN23sQfuyFIFwuIVWOR4s\n3rXmEdKkZi7ody3vF79Ppb+SgWkDeWncSyRYEvDFfERb93Pb2ocp8xaTIJk0aCL97BqXJcfo1+tx\ncrMvOjCArh8gYOEwajDENS8vI+wLcln/NGb0SYVIBMLhg793fw17loAKaCbogGqC1r6uta9bkkFO\nbO8bgoAPYnrchHwcoUpy3FSrKMQUC6osE7VYUOVvyZncsV2TZFRZRjQ0XEEfibqfKlcnHETpLDVS\nac9hR0o+mqyQ7PNhjYTYnZtP1GpFk2QUNYJo6BRWtGIPh4hSh2rLRI7WIkm5xIxyNFkG0yBqsRGT\nFfZ3LiAh4EUXRdKbazAEAUMUMQQBUxAwBTAEEVPgqNwzBDEFQUpBUrohKjkIYjz5cLJcTsywo6Og\nmnasQpCYaWeI82MK7d+gmwobrd3J6ZRKveogYfRNFCYL6JXrKFm7gEo9hdnmWBrNBAbL+3nI+wdM\n2YagRYgOvgEUO4Yaoc2ahSOnH15HFz4vE+mR4WZoXhKJQhDD6iFmxM2oqmF0/NTf97szTROD+KUg\n/y81rZ4kXT8Dq1+/kxHVb7H9rJn0HTXlhI9nmiZ7zxyHrXdvOv/9pSN3OI7wllQz66nt5FgbmfLi\nL6TtWvs6zPsN3LgYsoeckCHWfz6bpTPf5LJHn6Fq53aWvfsvrnrqJdK65AGwqWETV82/igdHPMiF\nPS6kORBla3UbWyvb2FbtZWtVGw3++Bu9IECXZAc9MtxkpEHIHePsLj0ZmZmI4xDOuAPnbqTeAutH\n9CbbdfxLOX0XE9YX0xTTmJaawOvldRRqYRZOPnKdy6hhcOWiB9kdMrC6+lGjOTEtXZiantiRGqK5\nupJtixaQnJVD79PO7HDEX9ri5+ItpZwnLqKbvoFsvStXnnVok7hpmrS0LOfLNc/gkspQnbezq2Ug\nZw3twVXFpfjMdj8iwwRR4OyNaxnV0ECgYhMl3c+ga/GXrE8aypDW9QydMo3Tr7iOaCjI1sUfk7ns\nD4RsbkrrnOxsy0BH5P0uF2CkOpk0aBFj5cWIqkKP5c+wvbUI+9T3MEWdXWJP/iI8ctA8hYCKVBnE\nEdJJbmvlbMtG/mi8RmOKTE12Bjd7HqJcOPBSkiKGaDOsZJmV/IbHSDGbsbWovBCYTO+U21m8dQ7/\nMF+jhxHCf+N7+I06/P7t+P3bycq6mMxO05Dlgx3eX69sZHGLjwfys+jptNEY0/h0fxGF3mfYFMum\nSk9gkLGCIbm30bm+hEDXfpTs/SsJ9l6UljmYJfbm6tovOKdp+QGhsh1+WxJP6dAOTdNobGwkFtuK\novjJypqBpvnZuPFy/IEdh71mRpy6GIfj8G4ITYEoqUdy+DYM8O6Hz+6Axt2QNxpt4pP4paSDnM+/\nD19TmI8fX0PMG0I0NGQjRvUAB1+kawwsDdJvf5D9aVCSJWBRVSyaiiUWQ9FUrGqMSevbcEVUZEMF\nXQU0/DYdezRGYiCGQ4mRbGtESUpEk+0k6hrEVMxYlHAkSl0ghEVTCUVjyLqGomnImoas6wetK5qG\nbByeLJ8oGIKAJkkYgoghxslZrD1tjmgaSKaBDhiShGma8YAMScYQ4310WQJTwhANdFHEkCQMWcIU\nRAxJxBBFQEKT44TPEAQcYgSLEKNRSu0ghGY7KbSYKqYY5xQeuZWorIMcQhKDCIKIaibiVWI4hTC9\ntShO06SSdLLEZraZBeRJNWxV8tlh60alPRNJUmhNcuN3ODFFMT5HQSTXbkVUZOpVnWyHjYgg0C/R\nTY7DiiaI7I9qrPGH6e52UOhxMe30EYc/iccJJ0nXz0AkFKD5qcHogkzGveuxfidy50QgvGMH+y+Y\nQeajj5J4wfQTOtahsPDe/1DSls6MGzqTMbTniR3MNOGVkXFH6JuWHjcH+u8jFg7x+v9cR3avPjSW\n7ychLY2LH3oCgOaQn18vupdd3k0M5m/sqI5Q7Y074QoC5Ke56J/toX+Oh345ifTKdOOwHH0quzml\nDdxSUcPphsL74/qckOMD2OwLMWnDHh7rns11OWnc+k0Rs7HxYbdUxuQebBpXYzr+5ghrZJVn99ez\nKxhBbf+fl4wAuZYIU7P7cGPnNJKVHz9W0zQ5e0MJm/zxSKy/dXZwWcGPO1Sv27MMX9W1AHxdfjor\nU29nr9PgZl6kK2WMLLiFS6r7UxmJMbJR494VW1nZMAdNsbN19B0413xMb7WCYEYPbJXbOuQOzm1h\nnW0w2/vkslvuT1VSKoYQJ8KjG9dzS+rjrNHH8q50KRfwHhPXJXHb0LG0kMIrmXZuqYfo9+59VzUL\nLNy8n36ESDlzPeXksVoY07F/rPkVtWSTRxnXNc/C9ATR5Th5VHSJEaethtfH00oVbadMoSK09JDn\nJCfnarp1vR1FScI0TcyIjn9FNWpNAHvvFHydi9i5854fPa/fxZiRRVg+upnA3pW8a7sGa1o+DqeL\n0rL9DBw4EK/XS2pqKqWlS8jIWESCJ54/TNcTkaS4w7coWjGMA+bDxmguadbyjnWLcitZ3UayY1sj\n+3bvw+VSGD/+bPLyDp8mJRqNEggEcLvdlPvLKUguQBAEdEPnxY0vsLR6Gb2Se/Hg8AdpU9twW9w4\nFAdBb5R1c8torQtRU3LAIX3IpFxOPT+fyJ5W5FQ7UVHg4z8VkW6a+OwyQ6/qRdfeKZiGiarqrJtd\nimtDHSnygUABzTRZHdCJui1MmZSL6I3gmZyHEdbxL60kuLr2kMeyxy3yTbqMZIJHEhnQqvNCrsyo\nRo1ePoPEmMFr3RRSIhpZTV+RruYxpjkFm6ZRZjOY2UWi0q5T0BYlIBpU2/geaVORdB1HNEKq34sr\nEkI0DEJWOzFBIiEUICEcpNnlQdJ1JENH1nVE3Tiw3P4tGUZHG0mPL7uiIUziJdqk9jY2PYJhiNj1\nMBY9htWIYtOi2NUIDjGIoJsIuomuK0i6jmCYoAtIhoGpiqAJiIaBgIlk6GCAYJqI/8s4RdhqRQ6G\nUI5QF/dYcZJ0/Uxs/eYj+i+9ntW5NzPi2idP6FiNL7xI0z/+QfcVy5GTk0/oWIeCv7yOd/+yiUxL\nM1P/foK1XRVF8OZEmPI8DLnmhA618oN3Kfq4vab65DNY7Whif2A7EbECQTCINo2lkz6d/jme9k8i\nfbIScNuO3eeq/7yNNMqwaXQfOjlOTLj3PbsrmF3vZcuoPiTIEjU+P6eu2U1vPcqXk0Yf1HbFhyVs\nXlLFq5ek4lQkpqQlMsDtoJdTppvDeZB5VVN1mioDJGU6sdoPTcAqQlHOebOIQE83fZJdPN+rC9lW\nC7YfuaFt3FvE/tbPWefzMovL6Sds4SbjAxxiBQCh9Fd4eH8qlU6RV9eGyK2tIMGTStIdIzn3qU85\nv+xdBEFEMA+kZ/hy7PlsKzz0/S05avCw9x3+nD6JRiGDFCnGEzmZ3FjezM36K4w3dmMm51KZeA0P\n16Tg1eP3wHSaaSCFVKOZJjEebWeLhrho+2qu1z6nqZuEaY3hqs1nS+VYFuqJ3DRpLab6Abp0tcJD\njQAAIABJREFU8H1UECw4HHlYrRl0yjiPhsYF+P3biUbrOtpIggPdDJFQPxJPxRgsgRxMS5SyEfdj\niioJzsEgGXTrdheh4F72lT2PpsVrxRb2fJdt269FUWJ4PBfTq/APPPfcc6iqSrf8tUiSRnn5AGJR\nJ4Kgk5pWTmHhykOer5I9p5KefgHTpk0jFCqjtq6Cme8sASAnZwddu23saGuaB78vNTf3pH+/v1FY\nWMjsOTMxDYULLriYNWtWMX/+wkOOZ3c1MnjQlx01TU1TYP+usXRpHEVpfS4GYBPiFkcd6Ds2lcET\nc2l9anP8wd7+932Y7T56Rvt3udiIDQvJhgsbCrocYEP3N/ALEcr2DaGrnoHdtNBfy8WFDQ2dUqme\nFMNFqpnwA/l+wliQUZDY6dxHQaQziq4QReUD61I04YD2u9eOnezq0/uQxw+gCwJR2YJD/aGfXIJh\nJ2pGkZRWTKuAw+ElEnGh6wo2WwC7o41ohs66ttPAoWLRNXrat5Gu1JBprSSouSkPF/CK+xbcpp9q\n8UCxmJ7mTgxESoTCH4x71DDNDkJ3MNmLEzOpXQso6zqKriHp39UOfrvPQNZUMrVqHHoIq6FSo2eT\no1eSp5eRqHmJ6jYSgwE8UjNOI4giaGhRhWggAQwTMyogoyNgEoy6iNkkJMNA8WukJtRiMVRaWtMw\nVYmML74ho9OJ9dU+SbqOARufPo8+/lU0XrmEnIIT55+z7/xpiC4neTNnnrAxjoRFv5/F7uY0pl2d\nSdbIE6edYfZNUDwf7t4F1hNTdLu2tpLFs98huGY5gbCAIRq8PakaAxmH2ZX8hL6MzhnKJf3Gk+I8\nMf5zH5TUc0dVLWdgYdYZ8ZuuN6JikcRDmiR/KnyazoCVO5iekcgzhQdyFt28aCWfiE4+KkhndOd4\nAlhN1XnrdyvZkijw4Wg3b/fryoRUzyHllm9vZv6r29BVg26D0pj8q34/aGOaJp8s3cWjszdx1tUj\n+JcvTgAu6pTEC9+JgjVNk4Bu4JYlWlWNKRtL2BuKP1wSzRauiszj+hH34LKE2LzlWoSQlbQlD3DB\nxCQ6t6o8s64Wq+qgwRNiq0ulsXE7qhllqa8T0y1lGGP68Jh70EFzu8M3j2LLYKagcpvtwEPmfKWI\nT9RTcUkisiDwn8gHtEr/aZ+oSJvgRsTgn9yCoSbTJDupELOwmVFy2yRq93pRm8OsslSix354TgAS\nJqTT2DgDn+SlJdlCdsalZDWfiWRzYSssJLB0Nb6vdpI4YyjBnTXsyP8DSD+e36vLmgewt+WTclVv\nlB4e9u3bR0FBAQB79uzhvffeA6Bn4XLS0/d39IvFPFgsbYeVm9/tXmy2c2ltbWJ/+f0U7+6M13vo\nlCkTJkxgzb411AYXMyqzFper9ZDtDoeqyt6omgWfLx0Bk7a2DDp1KqF7jzWH7RMLpGCtGIsi6Sxv\nkYmph/4/FUxw6xa6kkWi4WCpZech2zmdLYiSRlZW8UHnye9LYeeu04lFDx3gcUSYJqJhIBkGYrvm\nyCoGGDJgLsG2RELeZFrqc3DbW1DMGJ0zd1K6ayhaxIZD8ZNdVo2IjqV/I6pqYhUNFN2GHHWAoWFI\nXgTNRNRp1zh959s4sI7Rvt0AUZXA1BDMb/fH2xq6iKKKSKodq5yGEBYRMDBFE12PYTEFdNEgGolh\naiqqriMYBoamoxgGsqlD+7KoHzk33f826FYBtbYZW1LSkRsfA06SrmNAY81+7K+eyj57b/rd+/UJ\nKVAbq6qidPxZpN97LynXXXvc5R8tgjVNvPPgWtKVFqa/coK0XcFm+FsvGHwVnPP0cRMbi4aYP3sm\n9csW0qm4lG61ESQTojKUpSeQ4ldpfvA3jJ8wDbf1lwtS6Dt3I80KjFVsbAqF8dpEkiIGOyYPQjzG\na+nlkloerqrnyyE9GJhwwPxd7W1jxLo99NKjLGjXdpWsq2fhGzv4aGIiVRZYNbgHNDZSUy/QUhdm\n+NR8HO1RdR//dQMhX5SsgkR2F9Vx0e+HktYl7g8UiURYsHAha7bsImtnCafs3ka/pYt4rSXAFn+I\nhU0+Pu2Zyf7tu/imoZXVnhTqXAl8NDCfHYEwD+6t4ZGCbMYm2ch3OA86BzVVs9m157fkeG9hyeCL\neKishYt3ryOpvvp7R24wou8m3k0Yz0LldOxmiKnaDiakjCfT3kT/HgM7SkC9WRU3n41KctPTaePu\n3RVURWLcmJPGaDnCqvVjcDcNBR38mUUooTS6rXgKOcNB9LxkNgcr6PWBikOLaypDGXYcDSEs9lrC\nXbsgFuvYuicR3XWguIbSyUHaZD/Nq7bT+OyrCDENMakrjtPuA11DkC3o3nKkxNx2jYxJMHUr1kAO\nrdqrRFylhIfFH2ZZW6bgro9XLpBT7Wzq3ciatXGiIkkSerujfb/8fHI7SbRJDxx0phy2Hrjdg6hv\nfB8AUbRhsaTQo/sfSUubgGmYBNuiODxW6uvrkGWZ999/n6amAylO0oRCzpt6Jlm9khEViVA0iMPi\npHLtUtRPq1CkdBoFH94z7/spl28Htm87k9bWTE4zu5KeWkWpuAtr/mYUS7vmRzeRYiZi+yfk9aAG\n7TjlNlpquxBoTsGMWpDaNSiSriNpGpKuk+ysJSO5DDFmxomLeuBjRGSsLRqmy4iv+yxYlAhizCTm\nc2Bp04nJVmyEEAwDixAFVUDUTVCFuDZHA/EnpOY4VphiuwO9BIgyCBKGJGJKOqZsgCAh6E4EbCCI\nCC4LBgZoCiYmpighoGCKEggSiGL7svidbVI8X9vh9isypiDEw1BFCfOgPt9ui38jCPH9ggCCiOi0\noGS5MUURpZMLrTmKnOlC88YwwjrRff74nJNE7JmpSE4LKDJSkh21IYJaF0LOcIIoEasOEKsNImcm\noHvaiJnNIMpYEzoR2tNIKGUnNl9PlMREhDYXJBmYiWFybrjmhKfUOEm6jhFFsx7j1OIn2TDsbww5\n+/rjLr/l7bepf+xx8hd8iSX3F86V9T1888D77GxMY+olyeSMPXLh5p+MVS/Cwj/CLasg49i0aa0N\nFWz5/C2C3ywlY1sNzigYApRm2qjr3o2U0eM56/zLcGgGpWdNwDF8+C8epPCfPXXcXR03I9nDOi5T\noNEhcn9KCnf273yE3gdD1Q2+Lm5kbnkzq7UI1S6RLgGTNecO/MFN5Ftt14f5aYzpks2nz22izB/h\nydF2TtsZ4owtPnTxgNNyv7E5nHZJD5prArz38FpGXlBAr1GZvPnQQhKzLFx211kALF++nEWLFhHW\nZRL0EOd+/gXZd9yOZ8oUvEnJDF2+jUh7Ul9nOMyg4u0U9+5Pl9QkfJqOw6/y1sYoSVPzsfWMm9FN\nwyRW6Se4voYN1isRHS3I5HNT6AFsWozhoXUkO+oYa1tIS+kYZNVFtP9a/shTjJYr+eewc7Hb7Oi6\njvQTEwqrkRCSYsO/sByfsgmrnkXsG5XM3w9HaiehpmkSWF5N27x49nbRrZB+60DkJBumYYIA4e3N\niFYJ7+elaI1hlEwHwaK5iOzGdsoNaI3fmqsN4ADRtHTzYPhipN7QFznRht7WRuPf/07TJ28jBkAw\nBOrSCwjkj2dD7qG1S6d/s4SsiILYcyrWzj2JOepQ7Y2Yok64+hSKQxA0TFyWCIZmo9tZufQakkLd\nxib0FTUkiLA1bFAwKA17WxRHNw+2vkmsfH4LibJBgqjgluLXV004RrYQRVCjiGoYQY0gaFEELUZT\nqBU9YwONTQl0i6Ti1kQCeguq0IwgN2AXguhCM0LMQDJCCGGZaG03rCE/9nALihpGNHTEb03Hoomk\nGceV1JgiGIoAmoBJu0O4RUBLBMMhYMgChiJgKgKGAobcviwLmDKY0iGWpXhKi/h6+7IskJ17NbIt\nBW9wI1GjBV3SsSfkozjSqKx9G1MCT+oIZEcqEb0eV2JfUjqNQ7anIdsSESwWUBRMWe5Ypv0lxTRM\nhMNE7v1YqaNvr9doqRczqoMkojWHseZ5MGM6keIWAitrMFWD5It7EqsNoLdEkFPthLc1oTVHkBIs\nyGl2EAW0hhCOwRlYchOw5LiQXJa4b6JqIHzrP6cbCMdBs/9/CSdJ1zFC1zT2PT6cJL0Jy683kpB4\nbBmVv4/yq69Ba24i/4svjqvcn4NQQyvv/H4lKZKXGa8eZ22XYcBLp4AzDa5fcOT2P+husG/bcvZ+\n8R7Cqg1k7/MjmeBzCuzIz6AovS8P/O43dM75IXFteuUVGp9/gbz3ZmEfeALI5I9gTmkDhUlOeiU7\nCcQ0ChdvwWpAyaSj13b9a20Fj7Q2EbKICIZJfhCGqBJZy5uZcXUf8gcdnIiz1udn+JrdFGgRznLY\nmVftp7JTEpoIz772EchdyHD4cK75DO+NT7FnZ4grHh7B5q8r2L60mqsfH8msD2dSWVkJwPSzL6Xv\nKd158cUXqY+IuLbuI9bdQ7/GJnovihduTvv1r/lwxVqqh4/krOGDGDGwH41//AMzAyrPXng1AH/Z\nGmZys4mUaCH9tkG0zSsjvK0JI6iiiTqfpX5KTtfVeDyNzNfPZaYc1/yKps5jxl/YJ3dlrziQxXp/\nZFPl7TydUdmDWLJkCUVFRZx33nl06dKF5OTkjgdPMBhElmWs1gN+dU1VAbZ8XcHACV1IyTpg4jZN\nEzOsITp+6NMXbPUj+00s2W4E6fBvyk3v7CC8tQZBsoFE3BkJsBZYSL12GKaqo7cFUTIObd7VA0H8\nCxagedvYurqaZTkHZzu/LDKacqmRHVIlk2KDcPGd6FjTZL0vjFsL01uMIMZCcWKkhhHUKIIaRlQj\nRGMR7FqkfV/8I367HosgdOwLI6rRAzJ+ZlRenOAQT3cgSmiyFTk5EUt2Jths8QLkNhvYbGihEP5l\nyzFEgaTrrkfz+xCSEvGu+wa/bT8mAsrwviTmjKE5vBZvcBOG5fuEqZ0QKdCz8Akc6b1wJvUC2XIQ\nIdF9PqSEuM+WpgWIRuuIRusJhkppbFiAiYkl4iItMgKHIx9/pxpiZiOh8H5SU8exffvtgEhCwgAy\nO52PxzMEuz3nB1GpJ/H/L5wkXccBJZuWkf/JeaxLm87w2948bnJ1r5c9o0aTcv31pN9913GTeyxY\n9ucP2VabwrnTEsideMTr5uixbwm8PRWmvQYDLj7qbmXbV7Hrg9fx7+iEqnRl8ObnqMu0EB7ehy6T\nppMxaBIjn1zKdaO78vuzex1ShhEMsnfCRKwFBXR561/HRb2sNTbim/8lO78qZo8yiIv/cjrOrCMX\n7b57dQn/iQS5PSGRPwzJO2J7wzAYNG8zhgD/k5TMtD6dyPDYMHSDWQ+vRRAFLnlgGGL7m2/YH6Op\nKsDjtcXMFuKmVEc0zEiLxE1ijLSbbyT7xRdwnHIKpePPQhh+BouYjJMAQc1KTppG7+sKeeeddxg5\nYiRFq9bhVBI5/5JJvDPzHZzVNs5a+zFbJo2jyu3iEn8AYdcuonv2ANBt7hdY8/MBiFVUsOecc1l6\n+2/o6RpEyr5q8s8egO+DvVh7JBHd04q9XyqmJ8TirV+xMxbBEg1TeMoynEnNrGY0GZXNPJn9IKIi\nEjLixzgsvJ0e2ypwhWOkp6fT2NjId+9fp512Gk6nk507d1JRUUFWVhbTp09ny5YtnH766XzwRBHV\nTWXkZecz/e7hlJeXk56ejtP5Q7+e4uJili1bRnV1Naeddhpn/kjiYiMcpuKaawnvKMZ93t/AiAch\nZNw/jNoKP9mFyYiygBrV2bOmjramCEMnd8GiRaCtDfx+8PuJNbSwe+EeKvduQRDqsESjZNS3kq4p\nCFISwXCIdCOMrIbjxCoWwoiGkGPBA5qio0A8HYAMNjeGYiMsWbFa7JiKnbAooRhRTNmC2lIKiZ2R\ncoZgHZxKs+jBkZVMFAvb17WSMzATW3oCSBI1L7+GO1CJP6EzSS27SX/oASSbhYa/PoXcqRO5b/8b\nyXNowvlzYJomxcUPEI5U4XR2J9FzCnZ7Z7bvuIu+fZ/H7ToGR/GjGt9AEE5sNNxJ/N/CSdJ1nLDm\npesY2jib0vM/o/ugI+dBOhq0ffYZNffeR97772EfMOC4yDxWRFt8/PveJXhEPxe/dhxrMn5wFZQt\ng7t3g/LjuatqSrey9b1XUL5ZQ1ZVGEOQWTbmCQzRzsAJDkZNP7Wj7Zsrynj4i50s+PVp9Ox0+DfM\nlndmUv/oo3R+45+4Ro36WYegt7XhW7gQ39x5hNauBcNg/cgH8Vky6OGp46wnf7y+IUBE0+nx1WYE\nE0omDsIiieiqgWGYKNYfquEX7qrnqrpa7pHc/Pa0/IP2layvZ+E/d3D6pT2QLRIl6+qp3N2KaZgM\nvzyfT2iAFa0kGiUYSpAZVdVo69fTfck3CBYLjS++RNPf/05p1ynUZI0mLbyPbuVz2XPbdZSWl3PP\nXXcxZ+YCdlZuRDAlMAVSGoaTL+5lwK1jeP3jjxk0aBCdNI2ymSVku4OM/vfDHfMzTZMdf3wWZ6VI\na1Y+n9k2MHLESAYUp6LWBJFT7TiHhZn34ovs6tObrv4AvQrymVdfT25eNV26LCbxXxLvZl3Gfyad\n3yH3Hy//lvqknuhd+9AQrQdgxowZ7Nmzh8bGRmpr4+H+yVYrSZpG6XeSjPbKPJXSshJitngNy4Lc\nQvaW76agoIArrjhYu+vz+XjllVew2Ww4HA7q6+u54447SEj4TkSbrkNbG2pxMS0vvEBk5Uo8Z55J\nwmmnoe2ugUiApn11tJXUYY0FsMQCWKPB9uUglqMlSrIMbjemw0HM6kJJ9hDVLdR5BXSLHU9hJqk9\nMwhs2Upw0yakvDwEj4fQrl0YoowhyxiYWAZfhW3wQGJVC0i6/DKcI0eiB1V0X4jml5+B3HzSL78E\nrbGexqefQVAUUm/7H6TERCSP56j8Wk1VxQiFQJKRDlOB4CRO4v9VnCRdxwk+bzPR54bQJiXT9f61\nSPLR5206HKru/DXhjRspWLrkhDjp/1ysfOxjNlckMflsO93OOw7J5Px18GyfeK28iYdOotlUU8qm\n91/G/Go5nffFC9rW5NjRxp1K8qDrWPuJD7tbQRAFLv/zqVhs8fN/zgvLEQT44vYxh5T7LYxYjH2T\nJiMlJZH30YdHre0yQiH8i7/BN3cugRUrQFVRcrvgOecctKHjmf3vOixCDE0XuOSuwqOqYfnQun28\nGvBxhWrl3EaBkvUN2F0Klzw4DPl7/g+XfbGN5VaNLSN7k+w8OPWEaZi8/9g6mqviZW/cKTa6n5JB\n+Y5mYmGNkdMLWPD6doZenMG8pR/Se9cuTh80mIzf3ddxbM1vvYW9Xz+cw4cTLStj90UX89n5U+kj\nK/RfuJBwROWr8y7HZnOSsmodYecg1NQeXPnICBYsmsfmzZsBsAdzSInlc8Vjo6hvqsXn82HUhpmz\nah5jI92pjZVRnKAhyzKdU7PoX55BwaT+tMx6jPcSE8nu2YMrrr0W0zSZPXs2eXl59OhhwyF3Y8v5\n07n55t8wcdV8MoUa+i8Ps2XA7ZgYBF3l9B3ck7MvjRNpr9fL9pUrsT71NO76egxBYME5Z+NrL/0k\n6AqmqPL9TAOiYdC/c2fOGz0asbWV4lWr2LViBfZwmFO7d8caDFK6bh3pkkSaIEBLC3i9ce3UERC1\nOIlZnEQtLmIWJ7rbA4ke2mJWwpIDw5VAEBve5DpCDohZrUQtFkhI4Nrbb8eWlgZW6yFz2pmmSaA1\niivJ2nFN634/otOJIIoEli2j8qZ4JYHEC2fQ6eGHT9bmO4mTOIE4WtJ17Azi/3EkJKawYdgDDFl7\nN0Uf/pVTL/39MckzYjGCy5eTcO65/6sIF8DQ2yax666vWfN5HXnnDj/mSDs2vQOGBkMOjs40TZPQ\nmrXUzvwX4cVLyTGgPt1C2UWn0uuiGxnXdyQA8/+xDUeChYk39WXO0xvZ/HUlw87tyu46HztqfDw0\n5fB5cL6FaLGQevvt1N5/P/4FC0mYNPGwbU3TJLJlC60ffYRv3nzMUAg5I4PkK64g4ZxzsPXpjSAI\nrPioBFESOPe6HnzyagkrXvn/2LvvsKiu9IHj3zMdGBh6b1IVxYYNey8plqiJaSbZZJNNNT1mN5vk\nl2z67qZvSd0UV9NMorHECKixgxUrCogU6R1mgJm5vz8GFQIoKJZkz+d5eAbuPffeA5jMyynv+zNX\nv3XmoKu2ooErSwVLLVZWaGyEb6uhR6wHx9LL2Lc+n/4TT6d/qKpvYpPOSqJF3SbgAhAqwYT5vTi6\ns5ge/bzxC3dDCEFQrDvL39pDyueHcHbTkTC6FxlpLmRERTFh2tTTPxNnZ3zuuQcAs9nM3spKtk2f\njl0IAlavxhAfj23TJq63nKAoYTKGD18l85YhHD9uY8eqHCZdOQl/f3/Sft5HqZJPuaLirTd3Ut/o\nCETcNI5Rjl1+xZhrFXwLiqgMCCCnOA9LgIWw4gYyjxzBPGokA4cOdXxPQjB79uxW32ePO37HJ086\nyjepPD3Zl/gYBqud2LR/sqfvvRzb0MjRoEz0i15FqNRE+ftRXVJC6CsvU/P5IqYt/4EK9wAUlR8a\n+zE8yisIrKmiodGOSrHjbLagb6hr9czY5g8AkpLA05MwvZ5yIWiMi0PXvz9WISjYup98tz74FW/D\n88oJuM+5BovOhcOHLKT+XE6j1pmx83vTa3gARgEZ2woJ7ulJtbmcZR9/jNFgwlajp76hhiZd65Ha\nuXPnYgg584YLIQSunq1HjtWup+9jHD2a2J07sNfVofHxOeO9JEm6eGTQ1QkDp97G3r3/pc+htyjO\nvx7foI6zMJ9N/dat2OvrcZ1wcYpbd4XOzYU+sXZ2ZPmTuXQT0XPOPIp0RnYb7PgEeowBb0d+IVt1\nNVXffUfFki9ozMrCajSwOkEw4e4XGD1sRqsgz1LXxLF9pcSPCSYwyp3Igb7sWpND75GBLN2Zj0Yl\nmN4vsFNdMU2/mrIPP6DkzTdxnTgB8YvRSmtFBdXLllH59dc0HDmKcHbG7YppuM+YgVNCQqvg2Gaz\nk7GtkPB4bwISIoh038qRKn8KNu/vMM/Z1u8y2fljDooCV/Yx8p/eOnbN8uO+cb1Y/tZu0lYdo9fw\nAPTNC7n/szOXBq1gfqBvu/cD8Al1PZXS4aSQXp4ExbqTf7iSPqPDUKkEfbankhnXi615eVzZPJWt\nKAp5eXl8vXo9lQVZCMWOf4A/U5ycGPzDcjQeHhx//kUq/7uI2h/Xo2h0jP7DNaT9kE/6hjzixwXj\n5xyFqqAKYSqg3ngcXZ07U6+4gs1bfqa6toZAV18KqopxcXFhmNmMy9okTkwYz7ryYtKWfUte7zic\nDQZiYjrOaO8+axaW3XvQu7mR2RiJbsshRkdr8PdqJHrpTVS7RuG0vBqv8sNomtMFBCgKzJyJE+D4\n6R12/N7UGmxqRxkRvUpNiXccuUFBWAyuVLmXUW0yYHZyAi8vxs+dS2B8PLi5UV1moTC3jK9WfoLN\nZuf+++4nc8IMdgx/CqvWCNwEVjAsV2Opax790rviFeKE1a2UyionPDw8iB0WgN1uZ+nytTQ2NlLe\n6EhrgQ5cXd249+57QaWg1+u7bURK5eyMyvnCVtWQJKlrZNDVCUKlwuvat9B+Moa8xQvwfXTZOd+r\nJikZlbMzzsOGnb3xJZBw7zT2P7CK7astRF5jP/fRrqNroSoXJv8Fc/o+KpYspnrFShSLBUO/vgS8\n9BL3KJ+DXsdjw2e1vXxHMXarQuxQfwASZ0WQvaeErcsy+Ta3gLGxvnidrd5bM6FW47NgAfn3P0DV\nd9/hPmcOAJaDByn//HOqf1iB0tCAoV9f/J9/DrdpV3S4JuX4/nLMNU30THT0a/gDk8h+djubP93F\nnOagy1paSs3aJFynTMaqM7Jr7XHC4r0ZMScKN28D36/axUqtmdwaC8NmRfLli6ns/DGHxFmO4PTr\n8iq81QpXxHUcdLX7fQrBiNnRJH16kN6jArHsP4A+PZ3eI4azY8cOBvYdQHbqYfYUHKSotBgrao5Y\nvZk1aSTzxvQF4OCJaj5dupe1NdH8zeBKvasH6kcW4ubhxpCrdGRsL+K//7cVu1XBxeTC9bNvRu+k\nZ9vbGZjWKQysC+Vn7UEG9RpN6BB/PDw8aNi1i5ybbsb3m6V4zJxB+sSJWMz1jAgMRJOWBidOQEFB\nu68BJY7g5FS9hlWOF6NajYfFTKXelzpnH5z83dDERKMdOhQREIDw86NKuPLtZ3lEmE4w5P6p6CMj\nqXzzTZwGDsTP1ZW8D1IoKraTF9QLp8Zkok9kM/Lvf0djMmFrsqIWgmVv7aaq2IzWJZAm1xz+8drH\naCbeBBRhVFdidA6iqshCvbkRhCB+oj9Hy3ZwqOA4h5ZCUFAQd9xxB0IINm/eTGZmJgMGDCAiIoL0\n9PRTn7fcZSlJ0m+XDLo6KSiiN1vCbycx51/sSfmKfuPmdvkeit1OTXISLqNGobpM/yerdTHQt4+K\n7Yf9OLxkPb1uGHdO97Fv+YDqfH8qnv4cy/79CCcnTFdfjcf18zDExZFdlU36d3/m8Z6Pt3t9xvZC\nPAJc8A5xrMkx+TgTPy6YPWtzwbWROTOCutQf14kTMfTtS8k776Jydqb8v//FnLYDYTBgmjkTjxuu\nxxB79vqTh7acwMlVS2gfRwoRY7APvULrSS8I5PB7S3HNSqV6xQqUpibqd+yg4uoF2K0KQ67qgbuv\nY9ThxZ4h3H28gLu3HuGHSfHEDPFjd3IeeQE6Piwu54ir4Bar0zkFvD6hrsx7aggAhf/4BqHXM3bq\nTA59+Rn//vA9ALzUbvQeOpYn11ej0Wop2FaK0aOAT7fksD27HINWxcyhsXg/uIa4wNOLx40eBhJn\nRZJ7sJxewwMI6+mBZU8JtT8VMNxJTUNVA2r8CC/Skpu/k36N7qgLC3DOzSUqJpam4gruWLQYCgtw\nqa9v23mVCpuPH6qgQERYGJXh8RzJV1Pv7Em9kwcj7xuBW68w8PVFuLqiURQ2/DmZKrNPGHKZAAAg\nAElEQVSGm18cia3Jzpdv7MaebefaGwazf3k29W6NDHppFobm/Fu+jz566nGjBg+mLuMoX/0rB3Xj\nKNwLdrPrmt/jYYLcOi9c+vSiyuoozB5X38R+EYLZmEuT3pHx3QyU2LOgxezdutPlIYmJiSEjI4OV\nK1fS2NjI0aNHCQoK4qqrrkKtVhMf336Ge0mSfrtk0NUFA69/huOvLsdnw5+wDJ2Gwblr5Wws6enY\nSkovy6nFlgbcPZX0e38gLamJ2HldG+2yleRT/uqjlP+4F3ujCl2UBb+nnsI0Y3qrNSerslchEEwJ\nb7vGqrrUzImjVQybGdFqqmXQtHB2rstjQqOOcT27NgpkbbJTOvU+9qUcJ+S1bwhXFeL7+OO4z76m\n01vZzbWNHNtbSvy4YNQtag0OXTCNjIeT2J5SzqDDa/CYOxelqYnKr77ioPNVeAaeDh4BZkX68kpG\nAWlaK9uKqigZ5c37bmYKzOU46+1c22jgmbFRXfr+fsne0EDVDyswTrkVyye5DFNHU+ZpoW9YHMZU\nCz/lOGHSWvhX3zAadhSx+L/7KPDQ8OS0nlw3OAR3Z1279+2X6E0frxosP66l5vkDqEoKcbOVo7VV\nUHv0GCE1RYxqchQR50PHi6JS0+jsSa2TJ2ajHzU9Iql38sPuG0D89UMwxISQWailyejB+i8zCY/3\nIirBl63LsqgNaMA3zJWYIf64TWi9zkklBKN+P4SvX05j15rjaPVqyvIdmwt2rM7h8LZCwvp4ncq6\n3x6XmCgSrzOy9uMDbBn8DEKx4VJ3gtqQYGhOlTV02//hYi4mVKNl6RxHYfoAr1Ci4sIoLi7mxIkT\nODs7U1joSIgbHR1NWFgYw4cP55///CepqamnnjdjxowuJ3OVJOm3QwZdXaA3OFMz4TV6/3QDWxY9\nReLv3+jS9TVJyaBWYxzdPaknLhSNQU//gQa2pHtw4NMk+tw66azX2EoLHMHW6p3YGwXGWA+8Hn0R\np5Hj2qxRURSFldkrGew/GF/ntsFTxvbmN6/Bfq2ON6hgk76J0XUaig5XEtr77AlrLXVN7Fufx57k\nPCy1TWhNfmSZbiDx+eG4eHStNNCR1CLsNoWew1rXqtObjAya4MumDa6I17/Gf0wPbLV1FG7aQ3GR\nlcRZYW1+Bm8P7MHV6VnM2p+NXUCot4GHVE7ckxh6XoW3FUWhbtNmSv/1T+zV1ag9ExA6J8bePguN\nSY9iVyjI28XQY7WMVrtg2FFKk1bD42gJuHswOr0Cx7IhOxuyshyvzR9KznFEWSlqwKX5A0Dx9UWE\nhCDienKkPoHYOUPYe1RwvNaFfrcMZ9V3JQT39kajU5O9pxTfcDeqS8xY6prIyTZSv7cBc3UN4Cir\ncyy9jGPpZXgGujDz4TiCYjqumeYX7kb0IF92/XQctVoQEGlC56whbcUxAPqMOfuIaMxgPwqOVqLT\nq0lPPk6tMZjgHk4Icy09AhrQbqpAASLf/zdP9O+PWq1Gp2sbyJWVlVFbW0tYiwoT1113HYsWLcLd\n3Z0rr7wSb++z53STJOm3SwZdXdR7xJWkbp9CQt6n5ByaT1jPgZ2+tiY5CedBg1C7u1/AHnaPfndO\nYe8fvmXHzwpxN9lQadr/69xWWkDFa49RtmpHc7BlwvuhhTiNbbtO66QD5QfIqc7h1t63tjmnKAqH\ntxURGO2Om1froGhl+gnSNE1Mdndm89KjBPfyPJUc9JfqqhrYszaXfT/n02SxEdbHi4FTw3Ayalny\n/Ha2LT/G+PntJ1XtyKEthfiEuuId3HaEs9+8YWQcS2Pb6gIih4WiNbpQPfn3kG0nsO4A4HgjtpvN\nKA0NDPZzZ9QeDZsq6ng2PpQ7YwNQnccCakVRqNu8mdK33sa8Zw8aPz98HnsWyxEwXemPxqSnpKaB\n99cf5VjmIZ4pL0ejrcTLox5VVg5NW/eh+WcRlBdDyzQyej2Eh6OEhlGvCsHa2wd132gMY/ug6RcD\nwcEIg2MXnTtgai5V0qOwjm3PbadwVSUaJx3T7u5Lk8VGQ/0+RsyJwjfMjZ0/5rDl20xC4zyJHuJH\n0n8OojOoiR3qT2gfL8L6eHVqUfnQGZHkZ1TiH2kicVYkKpVgr08eMUP98A1zO+v1QiUYd6MjmaZ3\nsJGsPaWMuT721AhZ/eBArCWluCSeOY2Kl5cXXl6t/xDw9vZmwYIFZ+2DJEn/GzoVdAkhpgJv4ihw\n8YGiKC//4vzrwMnFP86Ar6Io7s3nbMDJlQ7HFUWZ3h0dv5Qibvg75n8OoW7pAygLN3Qq9UNjTg6N\nRzPxuPbai9DD86fWahgw1JWNO3Wkf/QT/e6c2uq8rbyQilcfpXxVGrYGgTHGDe+Hn8Bp7OwO7nja\nqqxVaFQaJoW1HUErzqmhsqieAZNC25z7Zkce4b4ujBkbzY/v7+fQlhPEjWi9g9FS18SuNTnsTc7D\nZrUTleDLwKlheAefntrsOz6E3T8dp/foIPzCz/6mDI4SMiXHaxh1XXS754VKMPLaaL796052rclh\n8JU9yKnxxLvxMLXvLsI2PpHKb76h7P0PQKshcsUKPhrdk3F/Xc+PJdncFRvQ7n07o27rNkrefhvz\njh1oAgPwf/ZZ3EeNpG7JFlTpK3FpspH3zD7q9h3g4YoTGKyNLTouICgItVsAZtMADLcNRB0fCxER\n2ANCEOHBCLUa855iKhYfxvt3fTCcYeTpZG04D38Xeo8OIn1dHtHDA9Dq1Gh1amY9cvqPlAGTQ4kd\n5o+LybG+0cWkx83bgMmnazvuTD5O3PbqyFbHRl7b/u/pbGKHBRD7i5FM54Gd/8NKkiTpTM4adAkh\n1MC7wCQgD0gVQixTFOXAyTaKojzUov39wIAWtzArinJxC99dYF5+wWzv8yhD9v0fqcv+weCZ9531\nmpqkZACM4ydc6O51m/jfTWL3tm/YtU3Q55Ym1HqtI9h67THKV6Y6gq1oN7wfehyn8XM6dU+7Ymf1\nsdWMDByJSd92LVXGtkLUGhWRA1vnFjpWWkdaTgWPT40lcqAv/hG5bFuWRVSCLzqDhqZGG3uTc9m1\n5jgNZivRg/wci9f92r6BD74inMPbCvn5iwxmP5bQYRFZcIwgZe0qYct3mag0os2UZ0uBUe5EDfJl\n15rjmHydqSmz0H9iFE3P53NkzFiUhgachwyhPjWV0nffxe/JJ3l8aiyPf72X73cXMHOAYyqsMTcX\nbXDwWUd56jdsoOrV17Dv3ImrTktAcDC6mhrEH+6CqipOjscpP2lpcven0j8M/7kzMPTpCRER0KMH\nhIWBXo+oa6Lyr2nogox4zoihOvk4dSuP4zoOTJPCqN9VgtqkQx/V+VHawVeFU1VST7/x7eecEkKc\nCrjAkfJCkiTpt6wzI11DgKOKomQBCCGWADOAAx20vx54pnu6d/kaNGsBhw5/RdTuV6gcOQd3b/8z\ntq9JTkIfG4suuGu77i4llUZNwigP1m9Vs+utpYRXrKR8xTZsDQKXKFd8HnwMp4ldG7nbWbSTovoi\nHk54uM05m83OkbQiwvt6ncpZddLSXfkIAbMGBDlSI8yJ5ptXd7BzdQ5GDz2pK45RX91IeLwXQ2dE\ntjsFeJLOScPwWZEkfXKQw9sL26zROin/cAWbv82k+Fg1HgEuXHVPP5yMHS/KBhh+TRTZe0pJ/uQg\nWr2aXnOGU3poLk35+Xjfew/OCQmcePoZyj9fhPvcucwZGMnnW3N4adVBJsX5ock9Rtb0Gfjcfx/e\nd9/tuGllJRw4APv3n3q1p6XhXFHByZBSEcKRbD0mBuXGG2nAh9piF1zmj2FXTCg3fLyDd24YwNC+\n7ec2U7toMU0MpXJ5FidedSz81ng7UbMuF32YG5aMcoyjgs8YoP6Sk1HH1ff/pv7ekiRJOi+dCbqC\ngNwWX+cBQ9trKIQIA3oAyS0OG4QQaTj2Ar2sKMp359jXy4pKrUY/8w1cv5zKzkWPMGTBog7bWisq\nMO/chfcf7rqIPewevW4aR9q6xezZp8eQuhO3Hq74PPgITpPmndP9VmWvwknjxNiQsW3O5R5w5MCK\nGdI6gLXbFZbuzGNklDcBJsc6L/8IE5EDfdmxOgeAgCgTU+/sQ0AnR2Jih/qTvj6fLUsziejvc6q8\nEEBFYR2bvj5Kzr4yjB56xs/vSeywgA7Xj7Xk6mlgwORQ0lYcI2agD1q9moDnn2vVxuehB6levZrC\nF14g9KOPeObq3sz+52Y+XL6Dm9cvwr28HNWfn8a+eDGqzExHzqqTnJ1RevWizsmZpuBg3J98ElV8\nPCIyEsVgwHK4gqoVWVhLzOgTPDBMjWPZsn246NRM6NnxKB2Ay7AALBkVqFy0uE0MQ2gEhX/dQelH\n+xBaFS6Dzny9JEmSdGbdvZB+HvC1oii2FsfCFEXJF0JEAMlCiHRFUTJ/eaEQ4k7gToDQ0LbreS5H\nPXoPZWvA9QwrXMTBbT/Sa2j7JWZqU9aB3Y5xwq9nahEgP2s/lUvuptTPDaeqh1lx9W088UrbEarO\narI3sSZnDWODx+KsbTvtl7G9CL2LhrA+rRcjbz9WTl6FmUcnt86jNWJOFCq1cCy87u3ZpUzeQiUY\nfV0MX7+SRtrKYwy/JopGs5XUlcfYm5SLRqcicVYkfccFo9F1bYv/wMlh1FY0MGBi+/+ONW5u+M2d\nS+3rr9N4ww0kVFeze2sa7q8Un2pjV6loOngQ3ZVXIuLioHdviIuDsDAaDh0i75rZ+P/xT6jmXQdA\nU1EdlYv305BRgcbbCa9b4jD09KTRZmdl+gmm9PbH6Szfh1Cr8L6tT6tjHtdE0ZBTjeuYEDTul2du\nOUmSpF+LzgRd+UDLRRnBzcfaMw+4t+UBRVHym1+zhBDrcKz3ahN0KYryHvAeOAped6Jfl4W+N71E\n4V/X4PTjozQNGItW1/aNqSYpCU1AAIa4s9cKvBzYrFZSv3iBfhnv4ISaL+MCGZq5jZjiwSxJ3sS8\n8SPO6b5bCrZQ2VDJtB7T2pxrtFjJ3l1Cz8QA1JrWGxO+2ZGHi07N5N6tR1pcPQ1Mvr390jud4dfD\njZ6J/uxJysVg1LJ7bS7m6kZ6DQ9g2MzIM+Z3OhOtXs2Ekzsj6+ogPR1273Z87NkDe/fiXl+PO6B8\n8QVKXByGKRP5LMfM2JxUTE//GatWS9ErrxJ0/Q24TZnc6v5VP6wAjQbXKZOx1zdR9VMOddtOIHRq\nTFdGYEwMQDT/DNcfLqHaYmV6/86VTPol5/6+OPfvWk40SZIkqX2dyXqZCkQLIXoIIXQ4Aqs2dXCE\nED0BD2BLi2MeQgh98+fewAg6Xgv2q+RsNFE44jnC7cfZseQvbc7bzWbqNm3CdVzbfFWXo+wDqWS+\nnMiwI3/nkEsCW2f/AzNNjJzdi3pdDUeX5VFZV3f2G7VjVfYq3HRujAwa2eZc1q4SrE12Yoa2nlqs\nb7SyMv0EV8QH4Kzr/gwnw2ZGotaq2LI0EzcvA3OeGMT4+b3OLeCqqYF16+C11+C66yA2FlxdITER\n7r4blixB0Wix3XgrfPQR5kWLOBwVTfH8WzD8dxHhA6Mpc3NnTa8xeNx8M/pevSh68UVstad/3ord\nTvWKFRhHjaLxeBOFf99B3dYTuAwJwP+xwbiOCjoVcAF8v6cALxcdI6JkfihJkqRL7azvYoqiWIUQ\n9wE/4kgZ8ZGiKPuFEM8BaYqinAzA5gFLFKVlkh96Af8WQthxBHgvt9z1+FvRf9IN7Nr1Of0y/0XB\nsZsIDD89DVa3ZQuKxYLxMs9C39hgYceiP5OQ8yG1woUdg//GwGm/Y+X2lzCoDUzvPYWPRqfAWhMv\nv/0lLy+8rUv3N1vNJB9PZlqPaWjVbZN/Ht5WiJu3Af+I1ikcftxfSF2jjdkJwef1/XXExaRn2h/i\nsdQ2ETXQt9MLxe1VdVhTtqLLPQBpaZCaCocOnc5xFRYGAwfCjTdCv34offtRV6ilalUOoOA3KwEn\ndwOmgwcp/+QT3K68Ar8dG9kT2Z8XUnIYNyCcgGee5tj1N1D6zjv4LXwCgPq0NGw1VjThcylffBht\nsBHv2/qgC2q7caC2wcraA0VcNzgErfoca2hKkiRJ3aZTQweKoqwEVv7i2NO/+PrZdq7bDPxPFBgL\nmPcmyocjKP7iAQIeW3Uqd1dNUhIqoxGXwYMvcQ87lrFzHdofHiDRnkOqaRJRN79Ngk8AiqKwLm8d\niYGJOGmcuHfOFTyx9yOCj4Xw1brNzB07vNPP2JC3gXprfbtTi3WVDeQdrmDQFeGnRgMVRWHx9lz+\nsuIAEd4uDAm/cOkEQnqe5d52u2PX4NatjuAqNRWxNx2drblOjJ8fDB4M8+Y5XgcNAp/TKS+sZWYq\nvjlCQ1YV+ggTjbk1VH6Xidctcfg+8gg1Scnk3nkXtvJy+j68kLpdVl5ceYi/Xdsf97lzKf/sM0yz\nZqKLiKTiy1RcJvwf9jodpqvDMSYGdhgortlfSIPVzoxznFqUJEmSupfMSN9N/EOj2Rp9D8OOvs7O\nnxYxcMrNKDYbtSnrMI4ejWinbMilZq6rYc+njzG4cAmlwpM9o//N4PGndyUeLD9IYV0h9/S759Sx\nu+6+iq9f3Myh78upHmzGzaVzpXRWZa/Cx8mHQX6D2pzL2F4ECsQ271osrrGw8Jt0kg8VMzLKm9fm\n9u3UzsFuU1MD27fD5s2waZMj2KpyFDnG3R1l0CDqRt2IxSMae69+eD89FZW+7X9Kil2hbksBVauP\ngUrgcU00zoP9qN1YQNWKLMzppTj39cHviccpeGIhKldXoqdP4U7XLN5NyWR2QhBDH36Imp9+4sQz\nr6Lxn4ww9EWlLcfv4ZFnXdj+/e4Cgj2cGBjacTJTSZIk6eKRQVc3Srj2SbJe/pagLc9Qm3gVqqPZ\n2MrLL8upxX2bluOx9hGGKUVs855J3PzX6WdqPeKTkpuCQDAmZMypYxEBvjiN1uCS5MZL73zBS0/c\netZnVTdWsyFvA9fFXoda1XYH3eHthfj1cMPdz5nV+07w5NJ06httPHt1HPMTwy98wHX8OGzc6Aiw\nNm+GvXsdo1tCQJ8+jhGs4cNh2DCIjqYpr5bKd3fjnOCHZUcR1Um5uF/Ro9Utm0rNVHydQeOxavQx\nHnhcE30qSDKOCKR+TzGVyzIxRLnjNn06tT9vRNcjHJVOx/3jo1m+5wRPfbuPlQtG4nHLn7Ec1YCi\nYIiux/O2q08VIT9RZebTLTksmBCNQXv6Z1ta28DGo6XcNTriV7GWUJIk6X+BDLq6kVanp3Ha3wj/\nYQ7bFz1Jj9pI0GovqwLX1ZVlHPz0QYaWLyNPBLB/8mKGDr+i3bbrctfR37c/nobWwdj9c6/iifSP\nCM4O4Zv1W5g95sw16ZJykmiyN3FFj7bPKcuvpSyvlsGzI3n4y90s3ZlPfJCJ16/rR5Svazt36wbH\njjkWvK9f73g9dsxx3Gh0BFZ//rMjyBo6FExts+bXp5eCWuB+ZQ+ESlD7cx7Ofb3RBbs6aiCmFlK1\nPAvUAo85MTgn+LYKfETzqFfxO7uoXJmN55wYgv762qnzBq2av8zsw0MfpbLvjR34lxnR+NjwmBON\nIbJ1ct3/bDrGvzdkoSiwcJqjfuDR4hruX7wbu6Iwa8CvJxmvJEnSb50MurpZz8ET2bZ1OoMKv+DI\nhn64DB6M2vUCBQ9dtHvtYgI3/pFBSgVbAm+i/02vEOzSfub2gtoCDpUfajdzPMCdf7iSb17awv7v\nypg0qP8ZpxlXZa8ixDWEPt592pw7vK0QVLBweyY5dRYemBDN/eOjum/ht6KcDrJOBlo5joSqeHnB\nmDHw8MMwahTEx4P6zLmsFEXBvLcEQ5Q7Kmctpit6YD5UTsU3R/C+vQ+V3x3FvK8MfZQ7nnNjUJva\nnwLUBRpxHRVMzfo8nPv6tKlnOAQNi9WuiLIGGsaFEDEpvM3aLUVR+GHvCdQqwXsbMpnWx58DJ6r5\nv+X7cdZp+GD+IKL9Lo9/e5IkSZIMui6Injf+jfK/rIMTRbjc/vtL3R2qCovJ/fAN+jX+i2PqEKqu\n/oTEAWcefUvJTQFgXMi4ds9HBvqhH6nBJcWXl979gpcev7XddqXmUrYVbuP2Pre3meayNFjZsSGP\nbLUNu07DVzcnds/6o4ICWLMGkpMdQdbx447j3t6OIOvRR2HsWEey0U4UK2+pKa8WW2UDbhPDAFA5\nafCYGUnZZwcpfCUVxaZgmhbeqZI5bhPDMB8oo+KbI/g9NBCVQYNiU6j+KYeadbm4+Dhxd20lSkY+\nSyeGoUWwNasMF52G+GATe/OqyK808/RVcby3IYvr399KfaONkVHe/P3afvi6Gc7lpydJkiRdIDLo\nugBMnj7sUSahYzOZ5iN4nf2SC6YkMxvzh1txt0/jkEcskQ9eh05/9jfjlNwUeph6EG4K77DNguuu\nYuG+jwnMDubbjduZNXJImzZrjq3BrtjbTC3mF9byn7+m4W6x4z7Ag5W39T/3PFwNDY41WT/+6PjY\nu9dx3NvbEVw9/rjjtVevLgdZv1SfXgJqgVPc6SlXp97eOA/0pTG3Bs9rY9GFdG50SWhVeMyNoeSf\ne6hakY3rxFDKFx+i8Vg1LoP9MV0dwd2Hi7l70U7eTTmKudHGvzdkYXLSsuah0axIP4FWLZg9MJgI\nHxcWLNnNk9Oi+f2oiIu78UCSJEnqFBl0XSBuBXWYvTT0zP83pYW34+0fcvaLuln+nv0oSw6hUrxp\n9GnAtSQC6+EadH3PHHRVN1azo3AH83vPP+sz7vjDVL59eTvpS0uZNCgeo6H1NOOq7FVEe0QT5RF1\n6ljq7kKSPziA0argMT6Qe6/t1bVvTFHg6FFHgLV6NaSkQH09aLUwciS8/DJMmQJ9+553kNX6sQrm\nvaWnphZb8pgbA9DlRev6UDeMo4OpXZ/nWCtmt+N5XSzOAxxZ4KfFB3BV3wDeWHsEgGsGBLFy3wke\n/3ovR4trGRnljclZy9hYX3Y/PUkumpckSbqMyaDrArCWlGDZuxfd9XMw2N4l478P4v3wNxe1D9kb\nt6D9oQRwpn6cmugJYyl5by8VXx9BG+CC1qdt7cOTNuZtxKpYO5xabCkqKADNcIHXej9eeOcLXnr0\n1lPn8mvz2V2ymwUDF5w69vX3GeStzkWlgoTbejJyaCcXetfUOIKr1asdwVZWluN4ZCTcdpsjyBo3\nzrEY/gI5NbU4KazNufMJdkwTw2jIqAAFPG/s2eZ389yMPpgbbUzvH8iM/kH0DTbx7HJHjuGHJsV0\nSx8kSZKkC08GXRdATUoKKArB193Ijo11JOZ+wL6fv6fPqBkX5fkZq9bivL4JULBO9yJmuGPaz/OG\nXhS/vZOyzw/ie29/VB0UQE7JTcHT4Em8d+fy2j50/XQW7v+IwMxglm1OZfpwRyLYVdmrAJgaPhWb\n1c67/9iJ+kA1dU4qbnokgbBgtzPdFjIy4PvvYeVKRzqHpiZwcYHx4x2L36dMgaioM9+jG9XvPTm1\n2L0TxkKrwve+/qAS7QZOni46Prz1dHLd+YnhrDlQRFpOBZPi/Nq0lyRJki5PsjbIBVCblIw2KAh9\nTAwDbniOPOGPKXkhFvO51SzsigNffo/zelBEHeKGaMKHn15npXHX4zmvJ9bieiq/PUrrik0OTbYm\nNuZvZGzI2HZzanXk1rum0KC2sOvrI9RazIAj6Orn0w9XfHjl2Y2oD1RT46djwQsj2w+47HbYsgUW\nLnSsv4qNdazHqqhwBFkpKVBeDsuWwb33XtSAS1EUzOmlGKI9UDl1/98qQq3q9EiVSiX4980JfHfP\nCExObUsqSZIkSZcnGXR1M3tdHXVbtmCcMB4hBAYnFyrGvkSIUsCuxc9e0Gfv+3gJbjvdsKtKMNwx\niKC+cW3aGKI9cJsQSv2uYuq2FbY5n1qYSm1TbaemFlvqGRKEKtGOd70/L777JZmVmWRUZJDoPIV3\nn9qEa2kT6gEePP7McIwt10OZzbB8OdxxBwQEOPJj/e1vEBwMb7/tSO+we7djndbYsXCJMvs35tZg\nq2zAKf7yKBztatASF3iWkUJJkiTpsiKnF7tZ7aZNKI2NuI6fcOpY/Jhr2JH2GQk5H5F7dD4hUd1f\njnLfO//BPa8HVvUxPO6fhsnft8O2ruNDaTheQ+XyTHTBRnTBp3fbJecmY1AbGBYwrMt9eOTGmSw8\n8DGBR4N4Y81HBFRHYv4yAIOiEDYznOlTIx0NzWZYtQq+/BJ++AHq6sDNDaZNgxkzHK/u7l1+/oVk\n3ld6QaYWJUmSpP8dcqSrm9UmJaMymXAelNDqeNiNb2IROiq/uh/Fbu+259ltNva/9j7ueZE0aI/i\n98Q1Zwy4wJER3fO6WNSuOso+P4itrglwTKGty3UUuDZozi3H0y13TaJR3UDgpn5cdeBerGoVE+7v\ny/QxgfDtt3D99Y5i0LNnO/Jo3XSTY2F8SQksWeI4f5kFXIqiYNlfhj7S/YJMLUqSJEn/G2TQ1Y0U\nq5XadetwHTsGoWn95uztH8rBXg8S37CLHSs/6Jbn2ZqsZLz4AaayntQbDhL6p5twcutcjii1ixav\nG3thq2mk4svDKHaFg+UHKaov6vLUYku9QoNRhlpxa/Cm2rmCPwwppd8LD4KvL1xzDaxd6wi0kpIc\nSUz/9S+YPPmSTRt2hrW4HmuZpVVuLkmSJEnqKvlnezeq37kTW1UVxhZTiy0Nmv0IGS9/TXjaC1SN\nuAaTx7mvD2o0m8l5+XOMDXHUuB4k5vHfodZ27depC3HF/aoIKr/PpCYllxSvFFRC1arAdZfZbDzm\n50L+8b8RuPFnRE2No9zO9dfDtdc61mVpfl3/7MwHygFw6iWnFiVJkqRzJ0e6ulFtUhJCp8M4ckS7\n59UaDaqrX8dDqeLQ54+c83PqK6vIe2ExTg09qfTJIHbh7V0OuE5yGRaAU38fqtfmkL/3KP192ha4\n7pSDBx27DsPCYMoUgrZsRlx7rWPq8MQJeO89mDjxVxdwAVgOlKENNnZYR1GSJOmdVMMAAB5nSURB\nVEmSOuPX9w54mVIUhZqkZJwTh6FycemwXVS/kWzdNJchRV9xOC2Z2EHju/ScyoJCqt75CZ09korQ\nbOLvuf28+i2EwOOaaMx5ldx4eBJ7Y8s6f3F5uWMd1iefwPbtjmLRU6fCG2/A1VeD/tcfpNiqG2jM\nrWk3IaokSZIkdYUc6eomDRlHaMrLa7VrsSN9bnqVUuGBZtUjWJsaO/2MkiNZ1Ly9DrU9iKq4IuLv\nOXuZns5Q6dRsH5mDVtEycnsMivUMC/2bmhwpHubMcaR4uPdesFgcaR7y8hy7EefM+U0EXADmg81T\ni73l1KIkSZJ0fmTQ1U1qk5MAMI4be9a2RjcP8oY9Q6Qti7SvXunU/fN276Xho90IxZOaIWZ6z7/2\nfLrbxsrqn/hv5BpEfiNVq7LbNtizx5GgNDgYpk+HDRvgnntg167T5/z9u7VPlwPLgTLUngY0fh2X\nTZIkSZKkzpBBVzepSUrG0K8vWt8zp2s4acDk+exxGkL84Xcoyss8Y9usDVtgSQ4oBiwTdPS65sru\n6PIpJwtcm/oHYhweSO2mAkfJm4YG+OwzGDoU+veHd95xFJT+/nvIz4fXX3cc/42yN1ixHK3EKc5L\n1jWUJEmSzpsMurpBU1ERln37OjW1eJJQqfC59m3U2MhfvKDDdodXrEG3sgqwYZvpS9Skseff4V/4\nOe/nUwWuTVf0wOBah+2eR1GCgmH+fKiqgjffdCyI/+Ybx0iX9rdffsaSUQE2RaaKkCRJkrqFXEjf\nDWqTkwFwndC1RfGBPXqyJeJOErPfZXfSEvpPmNfq/IEvvsVtlyuKqEJzUzzBvXt2W59bSslNwVPv\nQd99ZYh35+L13XegQEPvUeg+exLV1MnwPzjSYzlQjspZgy7MdKm7IkmSJP0GdGqkSwgxVQhxWAhx\nVAixsJ3ztwohSoQQu5s/7mhx7hYhxJHmj1u6s/OXi5qkZLRhoegiI7t8bcK8pzmmCsHv56cw19Wc\nOr7vg//itssDu6oI57uGEnCBAq6mqgp8P/mGr548hGrCRFi/HvHYYzQm7aT0queprAqjbVns3z7F\nZsd8qBxDT0+E+n8v4JQkSZK631mDLiGEGngXmAbEAdcLIdpWUoYvFEXp3/zxQfO1nsAzwFBgCPCM\nEMKj23p/GbDV1lK3bRuuEyae07ofnd5A/aTXCKCE3Yv+CMC+tz7G/WgIVvUx3B+cjFd4aHd3GzIy\nYMECREgIj398DCejO3z8MeTmwssvox/XD7eJYdTvLqFu24nuf/5lruFYNYrZKmstSpIkSd2mM9OL\nQ4CjiqJkAQghlgAzgAOduHYK8JOiKOXN1/4ETAUWn1t3Lz91GzZAU1OXpxZbikucxvZtV5CQt4iD\nf4nEvTaBBu1hAh+/DifXzpX16RSbzVFo+p13HElLtVoOju/F64lN/OOPO0Dr1Kq567gQGo9XU7k8\nC12QK7qQbuzLZc6yvww0KvQxv6m/ESRJkqRLqDPTi0FAbouv85qP/dJsIcReIcTXQoiQLl77q1WT\nlIza0xOn89zFF33j39mouQ3X2gSqnfYT+qebuy/gqq6Gv/4VoqMdSUvT0+H551GOH+eh231wHTUJ\nwy8CLnAUxva49nRhbGtlQ/f05xJR7Apliw5Se5aRO7vFinlfKYYod1Q69UXqnSRJkvRb1127F5cD\n4Yqi9AV+Aj7p6g2EEHcKIdKEEGklJSXd1K0LS2lqonbDBoxjxyLU5/fmXFJWTmT91SS5bePp/mup\nUmrOftHZVFfDCy9AeDg89hiEhMBXX8GxY/DUUxzQljkKXId2XOBa7aLF6+Y47BYrJe/txVr16w28\nmgpqMaeXUvntUerSCttto9gUyhcfwlbbiOvo39TfB5IkSdIl1pmgKx8IafF1cPOxUxRFKVMU5eS7\n8QdAQmevbXGP9xRFGaQoyiAfH5/O9P2Sq09NxV5Tc15TiwA2m42SpQeoU1sImNWb47XHmb9qPnk1\need2w5oaePFF6NEDnnoKRoyA1FRYv96RLb453UPKcUeB69HBo894O12QEe/b+2Cva/pVB16WwxUA\n6MLdqPjmCOZ9pa3OK4pC5Q+ZWA5X4D4zCn2E+6XopiRJkvQb1ZmgKxWIFkL0EELogHnAspYNhBAB\nLb6cDhxs/vxHYLIQwqN5Af3k5mO/CTVJyQiDAZfhw8/rPptWrias2p/ykTC51zTen/w+VQ1VzF81\nn4yKjC50qAZeeskxsvWnP0FioqMm4vLlMGhQm+brctd1usC1PtTNEXjVNlH63l5sv8LAy5JRgTbY\niPfv+qALcaVs8SEsRypOna/dVEDdlhMYRwdjHBJwhjtJkiRJUtedNehSFMUK3IcjWDoIfKkoyn4h\nxHNCiOnNzR4QQuwXQuwBHgBubb62HHgeR+CWCjx3clH9r52iKNQkJ+MyfDgqp7broTqrtLQI360a\nsk0nGD5lMgD9fPrxydRPEAhuXX0ru4t3n/kmtbXwyiuOka0//hGGDYNt2xx1EAcPbveS/Np8Dlcc\nZlxIx1OLv3Qy8LLVNlHyfvqvKvCy1zfReLwaQ4wHKp0a71t7o/VxpuyzAzTkVGM+UEbViiwMcV6Y\npoZf6u5KkiRJv0GdWtOlKMpKRVFiFEWJVBTlheZjTyuKsqz58ycVRemtKEo/RVHGKYpyqMW1HymK\nEtX88fGF+TYuvoaDB7GeOHHeU4t7lqSgt+sImtsPler0ryPKI4pPr/gUT4Mnv1/ze37O+7ntxXV1\n8OqrjmBr4UJHgLV1K6xYAUOGnPG563LXAZxxPVd79KFueP+uD7aaRkfgVf3rCLwsmZWggKF5N6LK\nWYv37X1Qu+oo/Xg/5UsOoQ004jkvFqGSebkkSZKk7ifLAJ2jmqRkEALj2LHnfI/d27cSmxdEZs9S\nIqJi25wPMgbxn6n/oYepBw8kP8DKrJWOE3V18NprjmDriScgIQG2bHGkgxg6tFPPTjmeQoQpgjC3\nsC73Wx/WHHhVN1Ly3q8j8LIcrkAYNOhC3E4dU7vq8L49HpVOhcpJg/ctcXK3oiRJknTByKDrHNUk\nJ+M0cCAar3NLntnQYMG6spASfQUj5l7RYTtvJ28+nPIh/Xz78ezax9n1xE0QEQGPPw4DBsDmzbB6\ntWNKsZOqGqpIK0pjbMjYc+o7nAy8ercIvBrP+V4XmqIoNGRUYIh2b5NdXuNpwO+hBPwWDETtpr9E\nPZQkSZL+F8ig6xw05efTcPAgruPPfWpx49cr8Ld4YZ/igZOzyxnbulrVvJ/ei7VPZDHg1UXkRnii\n/PyzI8FpYmLXn52/EZti69J6rvbow03NgVcDJe/vxVZzeQZe1qJ6bNWNp6YWf0nlpEHl/Nsv4C1J\nkiRdWjLoOgc1SedW4Pqk48cy6bHPgwz/fBKGj+q4odkMr78OERFoH1+IMSGR9969mSv+oOEl7Qbs\niv2cnp+Sm4KXwYu+Pn3P6fqW9OEmvG/rg62qgZL3Ls/A62SqiI6CLkmSJEm6GGTQdQ5qkpPRRUai\nCw/v8rV2u53sL9OwChu953UQcJnN8MYbjmnEhx+G3r1hwwZUa5O44+7/MD9uPosPLebJn5+kyd7U\npec32hrZmL+RsSFjUYnu+fXre5jwvrU58LoMR7wsGeVo/Z1Rm+T0oSRJknTpyKCri2xVVdSnpp7z\n1OLWpCQiywMpGFSPn/8vMp5bLPDWWxAZCQ89BL16wbp1kJQEoxwBmkqoeHTQoywYuICV2St5IPkB\nzFZzp5+fWphKXVPdeU8t/pI+ojnwqmhw7Gq8TAIve4ONhmPV6GPOnotMkiRJki4kGXR1Ue2GDWCz\nndPUYnV1JW7rm8g1FjNy+pWtT/78M8THw4IFEBMDKSmQnAxjxrS5jxCCO+Lv4JnEZ9hcsJk719xJ\nVUNVp/qQkpuCk8aJoQGd2+XYFfoIE9639cZWYWlOJ3HpA6+GzEqwKXJqUZIkSbrkZNDVRTVJyah9\nvDH07fp6qO1LfsTN6oLHzCg0Go3jYF2dI9AaMwasVsfi+HXroBOpKObEzOG10a+xv2w/t/14GyX1\nZ65ZqSgKKbkpJAYkYtAYutz/ztBHuON1a29slRaK3tlFY2431JA8D5aMCoROhT7c7eyNJUmSJOkC\nkkFXF9gbG6nbsAHXseMQqq796A7t20NMlj8ZEYX07NPPcXDDBujXzzGleM89kJ4Okyd36b6Twyfz\n7oR3yavJ4+ZVN5Nbndth2wPlByiuL+5yQtSuMkS64/OHfgiVoPjfe6nfXXxBn9cRRVGwZFSgj3RH\naOQ/dUmSJOnSku9EXVC/bRv2+nqMXZxatFqtVHx7lGpNHUPmTXGU7bn/fsfolqI4phLfeQeMxnPq\nV2JgIh9O/pC6pjpuXnUzh8sPt9vuZIHrMcFtpyy7my7QiO99/dGFGClfcpiq1dkoduWCP7cla6kZ\nW7kFQ6ycWpQkSZIuPRl0dUFNUhLC2RmXLubG2rhsBSF1vlSP1eK2Yxf07esIsh54APbu7dRU4tnE\n+8TzydRP0Kg03Lb6NnYW7WzTJiU3hf4+/fEwXJwgRG3U4XN7PC5D/alZl0fZpwewW6wX5dngmFoE\nMETLoEuSJEm69GTQ1UmK3U5tcgrGkSNR6TufeqDwRB6Bac5ku2SRuPRbGD8eVCpYvx7efBNczpwY\ntSsi3CP4bNpneDl5cddPd7Ehb8Opc3k1eWRUZHT7rsWzERoVHrOicZ8ZiSWjnOJ/7MZa2vndluej\nIaMCjbcTGq9zL0guSZIkSd1FBl2dZNm3D2txcZd3LR74YiPG7D0kvvcU4l//ggcfdIxujR59QfoZ\nYAzgk2mfEOEewQPJD7A8czkA6/PWA10vcN1djMMC8b49HnttE0Xv7sZypOKCPk9pstGQVSV3LUqS\nJEmXDRl0dVJNUjKo1RjbSeHQkZ0//ciQTxYTuOQxNE5OjrQQr78Ozs4XsKfgafDkw8kfkuCXwB83\n/pFFBxedV4Hr7mKIdMf33v6o3XSUfryPmk35KMqFWefVkF2N0mRHL9dzSZIkSZcJGXR1Um1yEs4J\nCajd3TvVvmHFD/SZezMuu5djfXAB7N4NI0Zc4F6eZtQZ+cfEfzAhdAIvb3+ZbYXbLvrUYns0Xk74\n3tMPQ08vqpZnUfHNERTruZUzOhNLRgVoBPoepm6/tyRJkiSdCxl0dULj8eM0HDnauanF6mq48070\nV12NUDtx9IN/oXn9jQs+utUevVrPX8f8lWuir0ElVEwKn3TR+9AelV6D1029cB0fQn1aEcXv7Kbx\nRF233d9utlK/pxh9hDsqnbrb7itJkiRJ50MGXZ1wssC1ccKEMzf88Ufo0wflww+pHHodG//0PNG3\n33kRetgxjUrDs4nPkjQ3id5evS9pX1oSKoFpcrgjkWptI8Xv7KJmfV63pJWoWp2NvbYJ0+RLN5Uq\nSZIkSb8kg65OqE1KQh8Tgy44uP0GVVVwxx0wdSqK0cieu56jcMJtxM+fcnE72gEhBN5O3pe6G+1y\n6umJ34MDMfT0pGpVNiXv7cVabjnn+zXkVFO3rRDj8EB0wa7d2FNJkiRJOj8y6DoLa0UF9Tt3dpwQ\ndeVK6N0bPv4YFi5k04sv4e02muJhVry9/S5uZ3+l1EYdXjf1wmNuDE0n6ih6cyd1aYVdXmSvWO1U\nLD2C2qTHbXL4hemsJEmSJJ0jGXSdRe269WC34zr+F1OLlZVw221w5ZVgMsGWLVQ89gieqXpy3AoZ\nccXUS9PhXykhBC4Jfvg9OBBtoJGKr49Q9tlBbLWdL5pdsyEPa1E97jMiUenlWi5JkiTp8iKDrrOo\nTU5C4+eHoU+L9VArVjhGtz77DP74R9i5E4YMYceStbjYDPjOjkOtlm/650LjYcDn9/GYruiB5XA5\nRW/sxLy/9KzXNZWaqU4+jlO8N05xXhehp5IkSZLUNTLoOgO7xULtxk24ThiPEAIqKuCWW+Cqq8DT\nE7ZtgxdeAL2e9J2p9DwexJGYYqJjL58F679GQiVwHR2M3/0DULvqKPvsIKX/2Y+1rP1M9oqiUPnt\nEYRahfvVERe5t5IkSZLUOZ0KuoQQU4UQh4UQR4UQC9s5/7AQ4oAQYq8QIkkIEdbinE0Isbv5Y1l3\ndv5Cq9u8BcVsxjh+Aixb5hjdWrQI/vxnSEuDhAQAGpsaMC/Po1RXSeJ10y5xr387tP4u+N7bH9MV\nPWjIqqTw9R1Ur81BabK1ale/s5iGzCpM03qgdut8iSZJkiRJupg0Z2sghFAD7wKTgDwgVQixTFGU\nAy2a7QIGKYpSL4S4G3gVuK75nFlRlP7d3O+LoiY5CY3BgMs/3oXFix2Fqn/4AQYObNVu49KVxJi9\nKZhmw8VF7pjrTkKjwnV0MM79fKhcmU312uPU7SzG/eoInHp5YatrompFFrowN1yG+F/q7kqSJElS\nh84adAFDgKOKomQBCCGWADOAU0GXoigpLdpvBW7qzk5eCorNhvL1N0TkHkfs3wfPPONYv6XTtWqX\nl3eMsN1uHPHJZ9yYeZeot799apMer+t7YhniT+X3Ryn75ACGnp6gFtgtNjxmRSFU4lJ3U5IkSZI6\n1JnpxSAgt8XXec3HOnI7sKrF1wYhRJoQYqsQYuY59PHiKy3FduVVBB0+BH5+kJoKzz7bJuCy2+0c\nXbIVu1CInTf80vT1f4wh0h2/BwaemnK07C/DdUwwWn+XS901SZIkSTqjzox0dZoQ4iZgENCyKnSY\noij5QogIIFkIka4oSmY7194J3AkQGhrand3qmqVL4e67UZeVUeLji2dqKni1vxsudf06okqDOJJQ\nxrigS9jn/zEtpxzNB8twSZDTipIkSdLlrzMjXflASIuvg5uPtSKEmAj8CZiuKErDyeOKouQ3v2YB\n64AB7T1EUZT3FEUZpCjKIB8fn05/A92mpATmzYPZsyE4mLxhwzBfdSXqDgKu2tpqDMn15DuXMGKm\nXDx/KahNeozDAhFauQlXkiRJuvx15t0qFYgWQvQQQuiAeUCrXYhCiAHAv3EEXMUtjnsIIfTNn3sD\nI2ixFuyy8dVXjp2JS5fCX/5Cw38XU1ta5ti12IGtX6zCq8mEy/QwdFq5Y06SJEmSpDM7a9ClKIoV\nuA/4ETgIfKkoyn4hxHNCiOnNzV4DjMBXv0gN0QtIE0LsAVKAl3+x6/HSKi6GuXPh2mshNNSR5PRP\nf6L25w0AuHZQ+ifj4D6ij/hxKCyfPv0TLmaPJUmSJEn6lerUmi5FUVYCK39x7OkWn0/s4LrNQPz5\ndPCCUBT48ku47z6oroaXXoJHHwWN48dRk5SMIS4ObUBAm0utViulSw9h0rgw6P/bu9cYqco7juPf\nP8uC3EVUilwsyKVuLa12Kwq0ClSLsdXWWF17SWuMxqb2dTHpqyZNwysTUxtDo8H0hZfQpNKqJXFX\nSqVqXcFoUakUMYBYLiLdBVl22acvdmJXLu7sMnvO7JzvJyHZfc55zvyHXybz32fOnNN0TdaVS5Kk\nIap4J8McP96zutXUBLNmwebNsGLFxw1X1/79fPTqq6e9wfXGp/7CjLbJHFwcnD3R281IkqTyFK/p\nqquD6dNh5UrYuBEaGj6xue255yAlxi07+Xyuffve5zMvjWD72XtYeO21WVUsSZJqQEUvGTFk3Hff\naTe1N7dQf8EFjJw376Rtrz26nllpMtNv+RLDhhWvX5UkSQNn59BL95EjHH7hBcYuW9Zzg+teNr/0\nd+a9N5XtDQeYOWtuThVKkqShqpgrXafRvnEjqaPjpG8tHj36Ed3P7GPvyGDRd6/PqTpJkjSUudLV\nS3tzC8PGj2f0lz95GYiNa55i8tFzYPkkzjprVE7VSZKkocymqyR1ddG+fj1jr7qKqK//ePzdHduY\ntWUSW6fs5rIrF+VYoSRJGspsuko+2ryZ4x9++IlvLXZ3d7Pj8VfojE6+0HTVp8yWJEn6dDZdJW3N\nLUR9PWMWL/547MVnn+Wigxew5ysdnD/55AulSpIklcumC0gp0dbczOgrr6Bu7BgADh06yPgNXewc\nu5dF3/KG1pIk6czYdAEdb79N586djOt1g+uXH1vHuK4xTLxpDsOH+yVPSZJ0Zmy6gPaWFgDGLlkC\nwJbXNjH3nSm8fdH7fK5hfp6lSZKkGuESDqUbXM+fT/3k8+ns7KTtyR10149kwa3L8y5NkiTViMKv\ndHX+Zy9HX3+dcUt7Loj6/JNPM+3webRfPZJx4yfkXJ0kSaoVhW+62p/r+Whx3LKl7Nmzk2mbRrNt\n0m4WLFnax0xJkqTyFb7pamtuoX7GDEbMns2bj25kWBrG7KYF3tBakiRVVKE7i+Pthzny4ouMW7qU\n1uc3MHfvVN6df4hp02fmXZokSaoxhT6R/vDzfyN1dlL/1UXUrzvInlHHWXyTN7SWJEmVV+iVrrZn\nm6mbOJFN/3qPc4+dzYjrpzBi5Mi8y5IkSTWosE1X6uykfcMGWLiE2VvP563pu/li44K8y5IkSTWq\nsB8vHmltpfu/bRwZdQmjUweXNS3re5IkSdIAFXalq625hbpZi5ncNY39C49zzqTz8i5JkiTVsLKa\nrohYHhFbI2JbRKw4xfaREfF4aftLEfHZXtvuLY1vjYhvVK70gUspceivG6lv+A47xr/PwuVVUZYk\nSaphfTZdEVEHPABcBzQAt0VEwwm73QEcTCnNBu4DVpbmNgBNwOeB5cBvS8fLVcdbbzHi3K8xrG4U\nU26+hLq63EuSJEk1rpyVrsuBbSml7SmlY8BjwI0n7HMj8Ejp5zXAsoiI0vhjKaWOlNI7wLbS8XL1\n7z/8mfoLF7F91ntcNPfivMuRJEkFUE7TNRXY2ev3XaWxU+6TUuoCDgGTypybqa6uLs7aeyHHOg6w\n4Ic35FmKJEkqkKr59mJE3AXcBTBjxoxBe5zhw4dz+NJjUNfF6NFjB+1xJEmSeiun6doNTO/1+7TS\n2Kn22RURw4EJwIEy5wKQUloFrAJobGxM5RQ/UPNv/8FgHl6SJOkk5Xy8+DIwJyJmRsQIek6MX3vC\nPmuBH5V+vhloSSml0nhT6duNM4E5wD8qU7okSdLQ0edKV0qpKyLuAdYBdcDDKaUtEfFLoDWltBZ4\nCPh9RGwDPqCnMaO03xPAG0AX8NOU0vFBei6SJElVK3oWpKpLY2Njam1tzbsMSZKkPkXEKymlxr72\nK+wV6SVJkrJk0yVJkpQBmy5JkqQM2HRJkiRlwKZLkiQpAzZdkiRJGbDpkiRJykBVXqcrIvYB754w\nPIGeG2mfzum2n278XGD/gAocXH09z7yOO5D55c4ZaLYD3Wb2gzu/Urn3tY/ZD/5xayX7as0dzL6/\n+1Tre/2FKaXz+twrpTQk/gGrBrL9U8Zb835OA3meeR13IPPLnTPQbAe6zewHd36lcjf7/I9bK9lX\na+5mX7nsh8prfih9vPinAW7va161Gax6z/S4A5lf7pyBZnsm26pRrWRfqdz72sfsB/+4Zj/4zL5/\n+wzp9/qq/HgxCxHRmsq4ZL9qj9kXl9kXk7kXV7VlP5RWuiptVd4FKDdmX1xmX0zmXlxVlX1hV7ok\nSZKyVOSVLkmSpMzYdEmSJGXApkuSJCkDNl0lETEmIh6JiN9FxPfzrkfZiIhZEfFQRKzJuxZlKyK+\nXXq9Px4R1+Zdj7ITERdHxIMRsSYifpJ3PcpW6f2+NSK+mfVj13TTFREPR8TeiPjnCePLI2JrRGyL\niBWl4ZuANSmlO4EbMi9WFdOf3FNK21NKd+RTqSqtn9n/sfR6vxu4NY96VTn9zP7NlNLdwC3Aojzq\nVeX0870e4OfAE9lW2aOmmy5gNbC890BE1AEPANcBDcBtEdEATAN2lnY7nmGNqrzVlJ+7astq+p/9\nL0rbNbStph/ZR8QNwFPA09mWqUGwmjKzj4hrgDeAvVkXCTXedKWUNgAfnDB8ObCttMJxDHgMuBHY\nRU/jBTX+/1Lr+pm7akh/so8eK4FnUkqbsq5VldXf131KaW1K6TrA00mGuH5mfzVwBfA94M6IyPT9\nfniWD1YlpvL/FS3oabYWAPcDv4mI6xkitxNQv5wy94iYBPwKuDQi7k0p/TqX6jSYTvea/xnwdWBC\nRMxOKT2YR3EaVKd73V9NzyklI3Glq1adMvuU0j0AEfFjYH9KqTvLoorYdJ1SSukwcHvedShbKaUD\n9JzTo4JJKd1Pzx9bKpiU0npgfc5lKEcppdV5PG4RP0bbDUzv9fu00phqm7kXl9kXl9kXV1VmX8Sm\n62VgTkTMjIgRQBOwNueaNPjMvbjMvrjMvriqMvuabroi4lHgBWBeROyKiDtSSl3APcA64E3giZTS\nljzrVGWZe3GZfXGZfXENpey94bUkSVIGanqlS5IkqVrYdEmSJGXApkuSJCkDNl2SJEkZsOmSJEnK\ngE2XJElSBmy6JEmSMmDTJUmSlAGbLkmSpAz8DzEA+k9UA0V7AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc8b4a5ebe0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# generate 10 random sequences of 10,000 random normal variables N(0,1)\n",
    "tmp = np.random.uniform(size=(10000,10))\n",
    "x = 1.0 * (tmp > 0.3) + 1.0 * (tmp > 0.8)\n",
    "mean = 1 * 0.5 + 2 * 0.2\n",
    "variance = 1 * 0.5 + 4 * 0.2 - mean**2\n",
    "print('mean {}, variance {}'.format(mean, variance))\n",
    "# cumulative sum and normalization\n",
    "y = np.arange(1,10001).reshape(10000,1)\n",
    "z = np.cumsum(x,axis=0) / y\n",
    "\n",
    "plt.figure(figsize=(10,5))\n",
    "for i in range(10):\n",
    "    plt.semilogx(y,z[:,i])\n",
    "\n",
    "plt.semilogx(y,(variance**0.5) * np.power(y,-0.5) + mean,'r')\n",
    "plt.semilogx(y,-(variance**0.5) * np.power(y,-0.5) + mean,'r')\n",
    "plt.show()   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This looks very similar to the initial example, at least in the limit of averages of large numbers of variables. This is confirmed by theory. Denote by mean and variance of a random variable the quantities \n",
    "\n",
    "$$\\mu[p] := \\mathbf{E}_{x \\sim p(x)}[x] \\text{ and } \\sigma^2[p] := \\mathbf{E}_{x \\sim p(x)}[(x - \\mu[p])^2]$$\n",
    "\n",
    "Then we have that $\\lim_{n\\to \\infty} \\frac{1}{\\sqrt{n}} \\sum_{i=1}^n \\frac{x_i - \\mu}{\\sigma} \\to \\mathcal{N}(0, 1)$. In other words, regardless of what we started out with, we will always converge to a Gaussian. This is one of the reasons why Gaussians are so popular in statistics.\n",
    "\n",
    "\n",
    "### More distributions\n",
    "\n",
    "Many more useful distributions exist. We recommend consulting a statistics book or looking some of them up on Wikipedia for further detail. \n",
    "\n",
    "* **Multinomial Distribution** It is used to describe the distribution over multiple draws from the same distribution, e.g. the number of heads when tossing a biased coin (i.e. a coin with probability $\\pi$ of returning heads) 10 times. The probability is given by $p(x) = {n \\choose x} \\pi^x (1-\\pi)^{n-x}$. \n",
    "* **Multivariate** Obviously we can have more than two outcomes, e.g. when rolling a dice multiple times. In this case the distribution is given by $p(x) = \\frac{n!}{\\prod_{i=1}^k x_i!} \\prod_{i=1}^k \\pi_i^{x_i}$.\n",
    "* **Poisson Distribution** It is used to model the occurrence of point events that happen with a given rate, e.g. the number of raindrops arriving within a given amount of time in an area (weird fact - the number of Prussian soldiers being killed by horses kicking them followed that distribution). Given a rate $\\lambda$, the number of occurrences is given by $p(x) = \\frac{1}{x!} \\lambda^x e^{-\\lambda}$.\n",
    "* **Beta, Dirichlet, Gamma, and Wishart Distributions** They are what statisticians call *conjugate* to the Binomial, Multinomial, Poisson and Gaussian respectively. Without going into detail, these distributions are often used as priors for coefficients of the latter set of distributions, e.g. a Beta distribution as a prior for modeling the probability for binomial outcomes.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Next\n",
    "[Autograd](../chapter01_crashcourse/autograd.ipynb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For whinges or inquiries, [open an issue on  GitHub.](https://github.com/zackchase/mxnet-the-straight-dope)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
